java - 如何在 Java GUI 中创建类似表的结构

标签 java layout-manager gridbaglayout tabular

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

This is the table structure I would like to create.

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

最佳答案

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

enter image description here

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);

关于java - 如何在 Java GUI 中创建类似表的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068296/

相关文章:

java - 既可选又可为空的 JAXB 元素

java - 每个实体的 Spring Boot 安全角色

java - 如何在 JFrame 中定位组件?

java - 如何在1个JPanel中获得2个JPanel,可调整大小,具有固定比例?

java - 如何正确调整 JFrame 中按钮的大小和位置?

java - 按钮文本在 gridBagLayout 中不完全可见

java - MAC jdk11中的Gridbag布局问题

java - 无法调整 GridBagLayout 中 JTextField 和 JScrollPane 的大小

java - 日期时间值如何存储在 mysql 中?

java - 检测 FreeMarker 中 undefined variable