首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在swing中水平显示2 JTable

问无法在swing中水平显示2 JTable
EN

Stack Overflow用户
提问于 2012-08-11 19:02:05
回答 3查看 822关注 0票数 1

我需要显示沿x轴的2JTable。我能够垂直显示它们(Y轴)。这是迄今为止我所做的:

​

​

但是我想显示如下的表格,

​

​

这是我的代码:

代码语言:javascript
复制
    tableA = new JTable(data, colNames);
    tableB = new JTable(data, colNames);

    JLabel labelA = new JLabel("Table-A");
    JLabel labelB = new JLabel("Table-B");

    JButton bt_copy = new JButton("Copy");

    Container c = frame.getContentPane();

    c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));

    c.add(labelA);
    c.add(tableA.getTableHeader());
    c.add(tableA);

    c.add(labelB);
    c.add(tableB.getTableHeader());
    c.add(tableB);

    c.add(bt_copy);

当我把c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));中的Y轴改为X轴时。我的GUI视图真的很糟糕。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-11 21:18:38

就像这样??

​

​

代码语言:javascript
复制
JTable leftTable = new JTable();
JTable rightTable = new JTable();

addButton = new JButton("Add >>");
removeButton = new JButton("<< Remove");

setLayout(new GridBagLayout());

// Prepare the buttons panel...
JPanel pnlActions = new JPanel(new GridBagLayout());
pnlActions.setBorder(new LineBorder(Color.RED));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
gbc.anchor = GridBagConstraints.SOUTH;
gbc.weighty = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
pnlActions.add(addButton, gbc);
gbc.weighty = 0;
gbc.gridy++;
pnlActions.add(removeButton, gbc);

// Prepare the main layout
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0.33;
gbc.fill = GridBagConstraints.BOTH;
gbc.weighty = 1;

add(new JScrollPane(leftTable), gbc);
gbc.gridx = 2;
add(new JScrollPane(rightTable), gbc);

gbc.gridx = 1;
gbc.gridy++;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weighty = 0;
add(pnlActions, gbc);
票数 2
EN

Stack Overflow用户

发布于 2012-08-11 19:39:27

我建议使用GridBagLayout而不是BoxLayout。与其将所有内容添加到JFrame本身,不如尝试将JPanel添加到框架中并将表添加到框架中。(这意味着您将将面板的布局设置为GridBagLayout)。

如果您是布局管理器新手,请尝试阅读布局管理器视觉指南。这是相当丰富的信息。

票数 2
EN

Stack Overflow用户

发布于 2012-08-11 20:49:12

尝试为contentPane使用一个Box。您将需要使用组合框来获得所需的布局。下面是一个应该能让您接近的例子:

代码语言:javascript
复制
tableA = new JTable(data, colNames);
tableB = new JTable(data, colNames);

JLabel labelA = new JLabel("Table-A");
JLabel labelB = new JLabel("Table-B");

JButton bt_copy = new JButton("Copy");

Box v = Box.createVerticalBox();
frame.setContentPane(v);

Box c = Box.createHorizontalBox();
v.add(c);

JScrollPane jsp = new JScrollPane(tableA);
c.add(jsp);

jsp = new JScrollPane(tableB);
c.add(jsp);

Box c2 = Box.createHorizontalBox();
c2.add(Box.createHorizontalGlue());
c2.add(bt_copy);
c2.createHorizontalGlue();

v.add(c2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11916830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档