我有10来个按扭要放在jfame上

button1 button2 button3
button4 button5    空    button6 
button7 button8    空    button9 空 button10
这样的格局摆放
不知道jframe的布局怎么设置,
请指教,不甚感激!

解决方案 »

  1.   

    要么用gridlayout来要么用null布局然后设置坐标要么就用grouplayout来进行自由布局
      

  2.   

    用null布局然后设置坐标要用哪个方法
      

  3.   

    对你说的问题也不是很明白,我这有两个计算器的例子,一个是应用gridlayout,另一个是应用gridbaglayout的,希望能对你有所帮助,以下是程序代码:
    import java.awt.*;
    import java.awt.event.*;public class Calculator2 extends WindowAdapter implements ActionListener {
    private int result = 0, data1 = 0, radixPointDepth = 1; private boolean radixPointIndicate = false;
    private boolean resultIndicate = false;   //是否显示 private char prec = '+'; private Frame f; private TextField tf; private Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14,
    b15, b16;    Panel p; static public void main(String args[]) { new Calculator2().go();
    } public void go() { f = new Frame("计算器_刘阳"); p = new Panel();
    p.setLayout(new GridLayout(4, 4));
    tf = new TextField(30);
    b1 = new Button("7");
    b2 = new Button("8");
    b3 = new Button("9");
    b4 = new Button("+");
    b5 = new Button("4");
    b6 = new Button("5");
    b7 = new Button("6");
    b8 = new Button("-");
    b9 = new Button("1");
    b10 = new Button("2");
    b11 = new Button("3");
    b12 = new Button("*");
    b13 = new Button("0");
    b14 = new Button(".");
    b15 = new Button("=");
    b16 = new Button("/"); f.add(tf, "North");
    f.add(p, "Center");
    p.add(b1);
    p.add(b2);
    p.add(b3);
    p.add(b4);
    p.add(b5);
    p.add(b6);
    p.add(b7);
    p.add(b8);
    p.add(b9);
    p.add(b10);
    p.add(b11);
    p.add(b12);
    p.add(b13);
    p.add(b14);
    p.add(b15);
    p.add(b16); b1.addActionListener(this);
    b2.addActionListener(this);
    b3.addActionListener(this);
    b4.addActionListener(this);
    b5.addActionListener(this);
    b6.addActionListener(this);
    b7.addActionListener(this);
    b8.addActionListener(this);
    b9.addActionListener(this);
    b10.addActionListener(this);
    b11.addActionListener(this);
    b12.addActionListener(this);
    b13.addActionListener(this);
    b14.addActionListener(this);
    b15.addActionListener(this);
    b16.addActionListener(this); f.addWindowListener(this);
    f.setSize(200, 200);
    f.setVisible(true);
        //f.pack();
    } public void actionPerformed(ActionEvent e) { String s;
    s = e.getActionCommand(); switch (s.charAt(0)) {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
    if (resultIndicate) {
    result = 0;
    data1 = 0;
    prec = '+'; }
    Integer Int1 = new Integer(s);
    if (radixPointIndicate) {
    radixPointDepth = radixPointDepth / 10;
    data1 = data1 + (Int1.intValue()) * radixPointDepth;
    } else {
    data1 = data1 * 10 + (Int1.intValue());
    }
    Double displayNumber = new Double(data1);
    tf.setText(displayNumber.toString());
    resultIndicate = false;
    break; case '+':
    case '-':
    case '*':
    case '/':
    case '=':
    if (s.charAt(0) != '=' && resultIndicate) {
    prec = s.charAt(0);
    resultIndicate = false;
    } else {
    switch (prec) {
    case '+':
    result = result + data1;
    break;
    case '-':
    result = result - data1;
    break;
    case '*':
    result = result * data1;
    break;
    case '/':
    result = result / data1;
    break; }
    }
    radixPointIndicate = false;
    radixPointDepth = 1;
    displayNumber = new Double(result);
    tf.setText(displayNumber.toString()); if (s.charAt(0) != '=') {
    data1 = 0;
    prec = s.charAt(0);
    } else {
    resultIndicate = true;
    }
    break; case '_':
    radixPointIndicate = true;
    break; } } public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    }
    *********************************************************
    import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame{ private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;// 计算结果显示区 private String lastCommand;// 保存+,-,*,/,=命令 private double result;// 保存计算结果 private boolean start;// 判断是否为数字的开始 public Calculator() { super("java_刘阳"); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints = new GridBagConstraints(); start = true; result = 0; lastCommand = "="; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx =0; constraints.gridy =0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); addButton("Backspace", 0, 1, 2, 1, insert); addButton("CE", 2, 1, 1, 1, insert); addButton("C", 3, 1, 1, 1, insert); addButton("7", 0, 2, 1, 1, insert); addButton("8", 1, 2, 1, 1, insert); addButton("9", 2, 2, 1, 1, insert); addButton("/", 3, 2, 1, 1, command); addButton("4", 0, 3, 1, 1, insert); addButton("5", 1, 3, 1, 1, insert); addButton("6", 2, 3, 1, 1, insert); addButton("*", 3, 3, 1, 1, command); addButton("1", 0, 4, 1, 1, insert); addButton("2", 1, 4, 1, 1, insert); addButton("3", 2, 4, 1, 1, insert); addButton("-", 3, 4, 1, 1, command); addButton("0", 0, 5, 1, 1, insert); addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值 addButton(".", 2, 5, 1, 1, insert); addButton("+", 3, 5, 1, 1, command); addButton("=", 0, 6, 4, 1, command); setSize(300, 300); setVisible(true); } private void addButton(String label, int row, int column, int with,
    int height, ActionListener listener) { JButton button = new JButton(label); constraints.gridx = row; constraints.gridy = column; constraints.gridwidth = with; constraints.gridheight = height; constraints.fill = GridBagConstraints.BOTH; button.addActionListener(listener); layout.setConstraints(button, constraints); container.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); if (start) { displayField.setText(""); start = false; if (input.equals("+/-")) displayField.setText(displayField.getText() + "-"); } if (!input.equals("+/-")) { if (input.equals("Backspace")) { String str = displayField.getText(); if (str.length() > 0) displayField
    .setText(str.substring(0, str.length() - 1)); } else if (input.equals("CE") || input.equals("C")) { displayField.setText("0"); start = true; } else displayField.setText(displayField.getText() + input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); if (start) { lastCommand = command; } else { calculate(Double.parseDouble(displayField.getText())); lastCommand = command; start = true; } } } public void calculate(double x) { if (lastCommand.equals("+"))
    result += x; else if (lastCommand.equals("-"))
    result -= x; else if (lastCommand.equals("*"))
    result *= x; else if (lastCommand.equals("/"))
    result /= x; else if (lastCommand.equals("="))
    result = x; displayField.setText("" + result); } public static void main(String[] args) { Calculator calculator = new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
      

  4.   

    因为GridLayout是按坐标一个个排下去的。比如说JPanel jp6 = new JPanel(new GridLayout(3, 2));
                                            JButton jb=new JButton("button1");
    遇到空的时候可以写jp6.add(new JLabel());
                   不为空的就可以用jp6.add(jb);这里是3行两列,所以add6次就可以了,如果像楼主那样的话,需要3行六列。
      

  5.   

    你看看下面这个import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class BoxLayoutDemo{
      public BoxLayoutDemo(){
        JFrame f=new JFrame();
          
          Container contentPane=f.getContentPane();
          Box baseBox=Box.createHorizontalBox();//先产生水平排列方式的Box组件,当作基底容器(BaseBox)
          contentPane.add(baseBox);
          
          /*产生垂直排列方式的Box组件来安置第一与第三个按钮
           */
          Box vBox=Box.createVerticalBox();
          JButton b=new JButton("first");
          vBox.add(b);
          b=new JButton("third");
          b.setMaximumSize(new Dimension(100,150));
          vBox.add(b);
          baseBox.add(vBox);
          
         /*产生垂直排列方式的Box组件来安置第二与另一个水平排列方式的Box组件
          */  
          Box vBox1=Box.createVerticalBox();
          baseBox.add(vBox1);
          b=new JButton("second");
          b.setAlignmentX(Component.CENTER_ALIGNMENT);
          b.setMaximumSize(new Dimension(300,50));
          vBox1.add(b);
          
          Box hBox=Box.createHorizontalBox();
          vBox1.add(hBox);
                 /*将第四与最后一个按钮加入水平排列方式的Box组件中
          */
          Box vBox2=Box.createVerticalBox();
              vBox2.add(Box.createVerticalStrut(50));
              vBox2.add(new JButton("fourth"));
              vBox2.add(Box.createVerticalStrut(50));
              hBox.add(vBox2);
              
              Box vBox3=Box.createVerticalBox();
                  vBox3.add(Box.createVerticalGlue());
                  vBox3.add(new JButton("THis is the last button"));
                  hBox.add(vBox3);
                
          f.setTitle("BoxLayout");
          f.pack();
          f.setVisible(true);
          
          f.addWindowListener(
               new WindowAdapter(){
                   public void windowClosing(WindowEvent e){
                      System.exit(0);
                   }
               }
          );
          
      }
      public static void main(String[] args){
        BoxLayoutDemo  b=new BoxLayoutDemo();
      }
    }
      

  6.   

    建议使用TableLayout, 比GridbagLayout简单很多.
    http://java.sun.com/products/jfc/tsc/articles/tablelayout/
      

  7.   

    麻烦点的就是先来个4行1列
    然后把第一行定为:1行3列
    第二行定为:1行3列

    第二行:中间列再分~~
    麻烦的可以慢慢实现~~~
    我也刚刚学JAVA
      

  8.   

    直接用NETBEAN 的可视化制作 JFRAM然后 在看生成的源代码 这个是 标准
      

  9.   

    初学Java
    不知道Jframe 是不是比较高层面的内容啊!
    我用的JCreator LE不知道怎么用Jframe啊?
    有高人指点下吗?或者有什么材料能够比较详细描述学习Jframe的啊?
    本人邮箱[email protected]
    有的可以发给我学习,不甚感激!