1

JTablex 軸に沿って2 を表示する必要があります。それらを垂直(Y軸)に表示できます。これはこれまでに行ったことです:

2 つのテーブルを表示しています。

しかし、次のようなテーブルを表示したいのですが、

ここに画像の説明を入力

これが私のコードです:

    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 軸c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));X軸に変更したとき。私は本当に悪いGUIビューを手に入れました。

4

3 に答える 3

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 に答える
2

GridBagLayoutの代わりにa を使用することをお勧めしBoxLayoutます。そして、すべてを aJFrame自体に追加する代わりに、 aJPanelをフレームに追加し、テーブルをフレームに追加してみてください。(これは、パネルのレイアウトを に設定することを意味しますGridBagLayout)。

レイアウト マネージャーを初めて使用する場合は、 レイアウト マネージャーのビジュアル ガイド を読んでみてください。それはかなり有益です。

于 2012-08-11T19:39:27.330 に答える
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 に答える