【问题标题】:How to Create a Table-like Structure in Java GUI如何在 Java GUI 中创建类似表格的结构
【发布时间】:2016-01-28 17:40:43
【问题描述】:

我想创建一个类似表格的结构,以便我可以轻松地显示信息。我希望它看起来像这样:

实现这一目标的最佳布局管理器是什么?我目前正在使用 GridBagLayout,但我无法让标题跨越整个顶行,让 ColumnTitle1 和 ColumnTitle2 分别跨越第二行的一半。有人可以提供一些代码来帮助。

【问题讨论】:

    标签: java layout-manager gridbaglayout tabular


    【解决方案1】:

    我认为GridBagLayout 是实现这种设计的最佳选择。这是一个完整的工作示例,如下所示:

    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    panel.setLayout(new GridBagLayout());
    GridBagConstraints gc = new GridBagConstraints();
    
    gc.gridx=0;
    gc.gridy=0;
    gc.fill = GridBagConstraints.HORIZONTAL;
    gc.weightx = 1.0;
    gc.gridwidth = 2;
    JLabel title = new JLabel("TITLE");
    title.setBackground(Color.RED);
    title.setOpaque(true);
    title.setHorizontalAlignment(SwingConstants.CENTER);
    panel.add(title, gc);
    
    gc.gridx=0;
    gc.gridy=1;
    gc.weightx = 0.5;
    gc.gridwidth = 1;        
    JLabel col1 = new JLabel("COLUMN 1 TITLE");
    col1.setBackground(Color.YELLOW);
    col1.setOpaque(true);
    col1.setHorizontalAlignment(SwingConstants.CENTER);
    panel.add(col1, gc);
    
    gc.gridx=1;
    gc.gridy=1;        
    JLabel col2 = new JLabel("COLUMN 2 TITLE");
    col2.setBackground(Color.GREEN);
    col2.setOpaque(true);
    col2.setHorizontalAlignment(SwingConstants.CENTER);
    panel.add(col2, gc);
    
    gc.fill = GridBagConstraints.BOTH;
    gc.gridx=0;
    gc.gridy=2;
    gc.weighty = 1.0;
    gc.gridwidth = 1;        
    JLabel info1 = new JLabel("Info 1 Text");
    info1.setBackground(Color.CYAN);
    info1.setOpaque(true);
    info1.setHorizontalAlignment(SwingConstants.CENTER);
    panel.add(info1, gc);
    
    gc.gridx=1;
    gc.gridy=2;
    JLabel info2 = new JLabel("Info 2 Text");
    info2.setBackground(Color.MAGENTA);
    info2.setOpaque(true);
    info2.setHorizontalAlignment(SwingConstants.CENTER);
    panel.add(info2, gc);
    
    frame.add(panel);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    

    【讨论】:

    • 完美运行。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2012-12-12
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 2023-03-03
    • 2018-10-06
    相关资源
    最近更新 更多