1

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

显示两个表。

但我想显示如下表格,

在此处输入图像描述

这是我的代码:

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

当我将 Y-axis 更改c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));X-axis时。我真的有一个糟糕的 GUI 视图。

4

3 回答 3

2

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

如果您不熟悉布局管理器,请尝试阅读布局管理器视觉指南。这是非常有用的。

于 2012-08-11T19:39:27.330 回答
2

像这样的东西??

布局

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);
于 2012-08-11T21:18:38.037 回答
0

尝试对 contentPane 使用 Box。您需要使用组合框来获得所需的布局。这是一个应该让你接近的例子:

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);
于 2012-08-11T20:49:12.933 回答