Java GUI(图形化界面)------GridBagLayout(网格包布局管理器)

GridBagLayout(网格包布局管理器)

网格包布局管理器与GridLayout布局管理器类似,但是它允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格。

使用GridBagLayout布局管理器的步骤

  • 创建GridBagLayout布局管理器,并使容器采用该布局管理器。

     GridBagLayout layout=new GridBagLayout();
     container.setLayout(layout);

  • 创建GridBagLayout对象,并设置对象的相关属性

     GridBagConstraints constraints=new GridBagConstraints();
     constraints.gridx=1;//设置网格的左上角横向索引
     constraints.gridy=1;//设置网格的左上角纵向索引
     constraints.gridwidth=1;//设置组件横向跨越的网格
     constraints.gridheight=1;//设置组件的纵向跨越的网格

  • 调用GridBagLayout对象的setConstraints()方法建立GridBagConstraints对象和受控组件之间的关联。

     layout.setConstraints(component,constraints);

  • 向容器中添加组件

     container.add(conponent);

weightx和weighty

设置组件占领容器中多余的水平方向和垂直方向的空白比例(也称为权重)所设置的控件根据增加到像素去给对应的控件按权重增加像素。

 
package AWT;
 import java.awt.*;
 class Layout extends Frame{
     public Layout(String title){
         GridBagLayout layout=new GridBagLayout();
         GridBagConstraints c=new GridBagConstraints();
         this.setLayout(layout);
         //设置横向坐标可以拉伸
         c.fill=GridBagConstraints.BOTH;
         //设置横向,纵向权值为1
         c.weightx=1;
         c.weighty=1;
         this.addComponent("btn1",layout,c);
         this.addComponent("btn2",layout,c);
         this.addComponent("btn3",layout,c);
         //添加本行最后一个组件
         c.gridwidth=GridBagConstraints.REMAINDER;
         this.addComponent("btn4",layout,c);
         //设置横向,纵向权值为0
         c.weightx=0;
         c.weighty=0;
         this.addComponent("btn5",layout,c);
         //设置组件跨一个网格
         c.gridwidth=1;
         this.addComponent("btn6",layout,c);
         //添加的组件是本行最后一个组件
         c.gridwidth=GridBagConstraints.REMAINDER;
         this.addComponent("btn7",layout,c);
         //设置组件纵向跨两个网格,横向跨一个网格
         c.gridheight=2;
         c.gridwidth=1;
         //设置横向,纵向权重为2
         c.weightx=2;
         c.weighty=2;
         this.addComponent("btn8",layout,c);
         c.gridwidth=GridBagConstraints.REMAINDER;
         c.gridheight=1;
         this.addComponent("btn9",layout,c);
         this.addComponent("btn10",layout,c);
         this.setTitle(title);
         this.pack();
         this.setVisible(true);
     }
     private  void addComponent(String name ,GridBagLayout layout,GridBagConstraints c){
         Button bt=new Button(name);
         //设置GridBagConStraints和按钮的关联
         layout.setConstraints(bt,c);
         this.add(bt);
     }
 }
 public class WangGeBao {
     public static void main(String[] args) {
         new Layout("GridBagLayout");
     }
 }

 

 

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
对于Java GUI编程实现计算器,你可以使用Swing和AWT这两种Java GUI工具之一。 以下是一个简单的Java GUI计算器的实现示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { private JButton[] numberButtons; private JButton[] operatorButtons; private JButton clearButton, equalsButton, decimalButton; private JTextField textField; private double num1 = 0, num2 = 0, result = 0; private char operator; public Calculator() { setTitle("Calculator"); // Create the number buttons numberButtons = new JButton[10]; for (int i = 0; i < 10; i++) { numberButtons[i] = new JButton(String.valueOf(i)); } // Create the operator buttons operatorButtons = new JButton[4]; operatorButtons[0] = new JButton("+"); operatorButtons[1] = new JButton("-"); operatorButtons[2] = new JButton("*"); operatorButtons[3] = new JButton("/"); // Create the clear, equals, and decimal buttons clearButton = new JButton("C"); equalsButton = new JButton("="); decimalButton = new JButton("."); // Create the text field textField = new JTextField(10); textField.setEditable(false); // Set the layout manager and add the components setLayout(new GridBagLayout()); GridBagConstraints gc = new GridBagConstraints(); gc.gridx = 0; gc.gridy = 0; gc.gridwidth = 4; add(textField, gc); gc.gridwidth = 1; gc.gridy = 1; for (int i = 0; i < 10; i++) { gc.gridx = i % 3; gc.gridy = i / 3 + 2; add(numberButtons[i], gc); numberButtons[i].addActionListener(this); } gc.gridx = 0; gc.gridy = 5; add(operatorButtons[0], gc); operatorButtons[0].addActionListener(this); gc.gridx = 1; add(operatorButtons[1], gc); operatorButtons[1].addActionListener(this); gc.gridx = 2; add(operatorButtons[2], gc); operatorButtons[2].addActionListener(this); gc.gridx = 3; add(operatorButtons[3], gc); operatorButtons[3].addActionListener(this); gc.gridx = 0; gc.gridy = 6; add(clearButton, gc); clearButton.addActionListener(this); gc.gridx = 1; add(equalsButton, gc); equalsButton.addActionListener(this); gc.gridx = 2; add(decimalButton, gc); decimalButton.addActionListener(this); setSize(200, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent e) { for (int i = 0; i < 10; i++) { if (e.getSource() == numberButtons[i]) { textField.setText(textField.getText() + i); } } if (e.getSource() == decimalButton) { textField.setText(textField.getText() + "."); } if (e.getSource() == clearButton) { textField.setText(""); num1 = 0; num2 = 0; result = 0; operator = ' '; } if (e.getSource() == operatorButtons[0]) { num1 = Double.parseDouble(textField.getText()); operator = '+'; textField.setText(""); } if (e.getSource() == operatorButtons[1]) { num1 = Double.parseDouble(textField.getText()); operator = '-'; textField.setText(""); } if (e.getSource() == operatorButtons[2]) { num1 = Double.parseDouble(textField.getText()); operator = '*'; textField.setText(""); } if (e.getSource() == operatorButtons[3]) { num1 = Double.parseDouble(textField.getText()); operator = '/'; textField.setText(""); } if (e.getSource() == equalsButton) { num2 = Double.parseDouble(textField.getText()); switch (operator) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; break; } textField.setText(Double.toString(result)); } } public static void main(String[] args) { new Calculator(); } } ``` 这个示例应该可以实现一个简单的Java GUI计算器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LNORA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值