用SWING设计布局 具体怎么布局?
谁能讲解一下

解决方案 »

  1.   

    布局管理器基本上都是awt的,swing添加了一些新的,但主要还是靠awt。
    计算器可以用BorderLayout和GridLayout结合,外层用BorderLayout,数字键盘用GridLayout。自己试试吧,有了问题再来问。
      

  2.   

    计算器布局来了!~ 我主要用的是空布局 因为自己能控制,流式布局不好控制位置!~/**
     * @(#)JiSuanQi.java
     *空布局计算器
     *
     * @author 
     * @version 1.00 2007/10/24
     */
     import javax.swing.*;
     import java.awt.*;
     import java.awt.event.*;
    public class JiSuanQi extends JFrame{
    JTextField t=new JTextField(20);
    JButton[] b=new JButton[27];
    String[] s={"Backspace","CE","C",
    "MC","7","8","9","/","sqlt",
    "MR","4","5","6","*","%",
    "MS","1","2","3","-","1/x",
    "M+","0","+/-",".","+","="
    };

        public JiSuanQi() {
        
         this.setLayout(null);
         this.add(t);
         t.setBounds(10,10,400,20);
        
         for(int i=0;i<27;i++){
         b[i]=new JButton(s[i]);
         b[i].addActionListener(new AAA());//注册监听
         this.add(b[i]);
            }
           
            for(int i=0;i<3;i++){
            b[i].setBounds(90+(60+50)*i,40,100,20);
            }
           
            int n=3;
            for(int i=0;i<4;i++){
            for(int j=0;j<6;j++){
            if((n-3)%6==0){
            b[n].setBounds(10,70+(25+5)*i,60,25);
            }else{
            b[n].setBounds(90+(60+5)*(j-1),70+(25+5)*i,60,25);
            }
            n++;
            }
            }
           
            this.setSize(425,240);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         this.setVisible(true);
        }
        
        public static void main(String[] args) {
         new JiSuanQi();
        }
    }
    //监听,实现监听
    class AAA implements ActionListener{
    public void actionPerformed(ActionEvent e){
    Object obj=e.getSource();
    System.out.println(obj.toString());
    }
    }
      

  3.   

    //运行不了
    Exception in thread "main" java.lang.UnsatisfiedLinkError: getCreatedFontHandle
    at sun.font.FontManager.getCreatedFontHandle(Native Method)
    at sun.font.FontManager.setSameHandle(FontManager.java:429)
    at javax.swing.plaf.FontUIResource.<init>(FontUIResource.java:42)
    at javax.swing.plaf.metal.DefaultMetalTheme$FontDelegate.getFont(DefaultMetalTheme.java:230)
    at javax.swing.plaf.metal.DefaultMetalTheme.getFont(DefaultMetalTheme.java:184)
    at javax.swing.plaf.metal.DefaultMetalTheme.getUserTextFont(DefaultMetalTheme.java:168)
    at javax.swing.plaf.metal.MetalLookAndFeel$FontActiveValue.createValue(MetalLookAndFeel.java:1684)
    at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:200)
    at javax.swing.UIDefaults.get(UIDefaults.java:130)
    at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:44)
    at javax.swing.UIDefaults.getFont(UIDefaults.java:350)
    at javax.swing.UIManager.getFont(UIManager.java:567)
    at javax.swing.plaf.basic.BasicTextUI.installDefaults(BasicTextUI.java:217)
    at javax.swing.plaf.basic.BasicTextUI.installUI(BasicTextUI.java:682)
    at javax.swing.plaf.basic.BasicTextFieldUI.installUI(BasicTextFieldUI.java:57)
    at javax.swing.JComponent.setUI(JComponent.java:653)
    at javax.swing.text.JTextComponent.setUI(JTextComponent.java:298)
    at javax.swing.text.JTextComponent.updateUI(JTextComponent.java:308)
    at javax.swing.text.JTextComponent.<init>(JTextComponent.java:282)
    at javax.swing.JTextField.<init>(JTextField.java:207)
    at javax.swing.JTextField.<init>(JTextField.java:174)
    at JiSuanQi.<init>(JiSuanQi.java:12)
    at JiSuanQi.main(JiSuanQi.java:55)
      

  4.   

    可以仿照windows自带的计算器,功能不必那么强就行。
      

  5.   

    要是我
    还是用 BorderLayout 自己写,写多了就会知道怎么好写的
    可以先从简单的布局开始,我以前也是这样的呀,现在也可以自己写了,太复杂的,可以想一下可不可以换一种设计的方法
    我想没有必要跟自己过不去
      

  6.   

    我上面写的没有功能 只有布局实现 具体功能还要自己加进去!~ 我的能运行出来啊!~
    /**
     * @(#)JiSuanQi.java
     *空布局计算器
     *
     * @author 
     * @version 1.00 2007/10/24
     */
     import javax.swing.*;
     import java.awt.*;
     import java.awt.event.*;
    public class JiSuanQi extends JFrame{
    JTextField t=new JTextField(20);
    JButton[] b=new JButton[27];
    String[] s={"Backspace","CE","C",
    "MC","7","8","9","/","sqlt",
    "MR","4","5","6","*","%",
    "MS","1","2","3","-","1/x",
    "M+","0","+/-",".","+","="
    };

        public JiSuanQi() {
        
         this.setLayout(null);
         this.add(t);
         t.setBounds(10,10,400,20);
        
         for(int i=0;i<27;i++){
         b[i]=new JButton(s[i]);
         b[i].addActionListener(new AAA());//注册监听
         this.add(b[i]);
            }
           
            for(int i=0;i<3;i++){
            b[i].setBounds(90+(60+50)*i,40,100,20);
            }
           
            int n=3;
            for(int i=0;i<4;i++){
            for(int j=0;j<6;j++){
            if((n-3)%6==0){
            b[n].setBounds(10,70+(25+5)*i,60,25);
            }else{
            b[n].setBounds(90+(60+5)*(j-1),70+(25+5)*i,60,25);
            }
            n++;
            }
            }
           
            this.setSize(425,240);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         this.setVisible(true);
        }
        
        public static void main(String[] args) {
         new JiSuanQi();
        }
    }
    //监听,实现监听
    class AAA implements ActionListener{
    public void actionPerformed(ActionEvent e){
    Object obj=e.getSource();
    System.out.println(obj.toString());
    }
    }
      

  7.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class Calculator extends JFrame implements ActionListener {

    char[] buttonLabels = {'7', '8', '9', '+', '4', '5', '6', '-', '1', '2', '3', '*', '0', '.', '=', '/'};
    JTextField output;

    public Calculator() {
    super("计算器");

    JPanel main = new JPanel() { public Insets getInsets() { return new Insets(4, 4, 4, 4); } };
    main.setLayout(new BorderLayout(4, 4));

    // 上半部分
    JPanel top = new JPanel();
    top.setLayout(new BorderLayout(4, 4));
    output = new JTextField();
    output.setHorizontalAlignment(JTextField.RIGHT);
    JButton clear = new JButton("C");
    clear.addActionListener(this);
    top.add(output, BorderLayout.CENTER);
    top.add(clear, BorderLayout.EAST);
    main.add(top, BorderLayout.NORTH);

    // 下半部分
    JPanel bottom = new JPanel();
    bottom.setLayout(new GridLayout(4, 4, 4, 4));
    for (int i=0; i<buttonLabels.length; i++) {
    JButton btn = new JButton(Character.toString(buttonLabels[i]));
    btn.addActionListener(this);
    bottom.add(btn);
    }
    main.add(bottom, BorderLayout.CENTER);

    setContentPane(main);
    pack();
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void actionPerformed(ActionEvent e) {
    char c = ((JButton)e.getSource()).getText().charAt(0);
    if (c == 'C') output.setText("");
    else output.setText(output.getText() + c);
    }

    public static void main(String[] args) {
    new Calculator().setVisible(true);
    }
    }
      

  8.   

    学习.对于自己来说要加强对AWT的理解与编程.谢谢楼主跟我学习的机会