为了账号安全,请及时绑定邮箱和手机立即绑定

如何安排 Java GUI 按钮?

如何安排 Java GUI 按钮?

小怪兽爱吃肉 2023-02-23 16:51:25
我需要按特定顺序排列我的按钮,但无论我做什么修改,它只会改变按钮的大小而不是位置。对不起,如果这是一个简单的问题,这是我的第一个 Java 类,我无法理解如何安排内容和事件处理。public class SwingCalculator extends JFrame {    private JButton jbtReset;    private JButton jbtAdd;    private JButton jbtSubtract;    private double TEMP;    private double SolveTEMP;    private JTextField jtfResult;    Boolean addBool = false;    Boolean subBool = false;    String display = "";    public SwingCalculator()     {        JPanel p1 = new JPanel();        p1.setLayout(new GridLayout(4, 3));        p1.add(jbtReset = new JButton("Reset"));        JPanel p2 = new JPanel();        p2.setLayout(new FlowLayout());        p2.add(jtfResult = new JTextField(10));        jtfResult.setEditable(true);        JPanel p3 = new JPanel();        p3.setLayout(new GridLayout(5, 1));        p3.add(jbtAdd = new JButton("+"));        p3.add(jbtSubtract = new JButton("-"));        JPanel p = new JPanel();        p.setLayout(new GridLayout());        p.add(p2);        p.add(p1);        p.add(p3);        add(p);        jbtAdd.addActionListener(new ListenToAdd());        jbtSubtract.addActionListener(new ListenToSubtract());        jbtReset.addActionListener(new ListenToReset());    } //JavaCaluclator()    class ListenToReset implements ActionListener {        public void actionPerformed(ActionEvent e) {            //display = jtfResult.getText();            jtfResult.setText("");            addBool = false;            subBool = false;            TEMP = 0;            SolveTEMP = 0;        }    }    class ListenToAdd implements ActionListener {        public void actionPerformed(ActionEvent e) {            TEMP = Double.parseDouble(jtfResult.getText());            jtfResult.setText("");            addBool = true;            SolveTEMP = SolveTEMP + TEMP;            jtfResult.setText(  Double.toString(SolveTEMP));            addBool = false;            subBool = false;        }    }我的结果:预期结果:
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

您可以使用GridBagLayout各种选项。


例如:


GridBagLayout grid = new GridBagLayout();  

GridBagConstraints gbc = new GridBagConstraints();  

setLayout(grid); 

//add TF

gbc.gridx=1;

gbc.gridy=0;

this.add(new JTextField(10),gbc);

gbc.gridx=0;

gbc.gridy=1;

this.add(new JButton("+"),gbc);

gbc.gridx=1;

this.add(new JButton("-"),gbc);

gbc.gridx=2;

this.add(new JButton("Reset"),gbc);


//also for another display (first TF will be on the same x as - Button) 

//(and maybe you want TF to cover the space for all 3 Button +,-,Reset)

//you could add 2 panels one over other (x=0 : y=0,y=1), place TF on P1 and all Buttons on P2



查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信