加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 此结构的最佳布局/嵌套布局

发布时间:2020-12-15 04:20:51 所属栏目:Java 来源:网络整理
导读:我是Swing的新手,我正在尝试创建一个界面,如: ?———————————- | | |信息文本| | | ?——– —————- ——– | | JPwdField | | | —————- | |按钮|按钮7 |按钮| | 1 —————- 3 | | | JTextField | | ?——– ——- ——– ——– | |
我是Swing的新手,我正在尝试创建一个界面,如:

?———————————-
| |
|信息文本|
| |
?——– —————- ——–
| | JPwdField | |
| —————- |
|按钮|按钮7 |按钮|
| 1 —————- 3 |
| | JTextField | |
?——– ——- ——– ——–
| | | | |
| | | | |
|按钮|按钮|按钮|按钮|
| 2 | 5 | 6 | 4 |
| | | | |
?——– —————- ——–

我们的想法是所有的按钮都在它们的“单元格”中展开,所以我已经阅读了嵌套的GridLayout,但是我在思考如何实现它时遇到了问题.有关如何嵌套布局或更好的方法的任何建议?

解决方法

就代码可读性的复杂性而言,GridBagLayout将充当最佳解决方案.由于这个结果最适合GridBagLayout,只要知道如何解决相同的约束:-)

import java.awt.*;
import javax.swing.*;

public class GridBagLayoutExample {

    private GridBagConstraints gbc;
    private JButton[] buttons;

    public GridBagLayoutExample() {
        buttons = new JButton[7];
        gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;
    }

    private void displayGUI() {
        JFrame frame = new JFrame("GridBagLayout Example");
        frame.setDefaultCloSEOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel contentPane = new JPanel(new GridBagLayout());
        for (int i = 0; i < buttons.length; i++) {
            buttons[i] = new JButton(Integer.toString(i + 1));          
        }
        JLabel informationLabel = new JLabel("Information Text",JLabel.CENTER);
        addComp(contentPane,informationLabel,1.0,0.20,4,1);
        addComp(contentPane,buttons[0],1,0.25,0.60,3);
        JPasswordField passwordField = new JPasswordField(10);
        addComp(contentPane,passwordField,0.50,2,buttons[6],1);
        JTextField tField = new JTextField(10);
        addComp(contentPane,tField,3,buttons[2],3);
        addComp(contentPane,buttons[1],buttons[4],buttons[5],buttons[3],1);

        frame.setContentPane(contentPane);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    private void addComp(JPanel panel,JComponent comp,int x,int y,double wx,double wy,int gw,int gh) {
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.weightx = wx;
        gbc.weighty = wy;
        gbc.gridwidth = gw;
        gbc.gridheight = gh;

        panel.add(comp,gbc);
    }

    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                new GridBagLayoutExample().displayGUI();
            }
        };
        EventQueue.invokeLater(runnable);
    }
}

OUTPUT:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读