1

私はこのパネルを持っています:

public class MyPanel extends JPanel {

    public MyPanel() {
        super();
        this.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();

        JTable leftTable = new JTable();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 0.1;
        gbc.weighty = 1.0;
        add(leftTable, gbc);

        JTextPane textPane = new JTextPane();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.weightx = 0.4;
        gbc.weighty = 1.0;
        add(textPane, gbc);

        JTable rightTable = new JTable();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = 2;
        gbc.gridy = 0;
        gbc.weightx = 0.5;
        gbc.weighty = 1.0;
        add(rightTable, gbc);
    }
}

次に、JTextPane にいくつかの文字を入力すると、自動的にサイズ変更されます。同じ行 (テキスト ペイン) に 200 文字あるため、2 つの JTable は表示されなくなります。

JTextPane の幅を修正するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

3

gbc.fill = GridBagConstraints.NONE;JTextPane に使用するだけです

于 2012-08-20T09:58:57.343 に答える
1

最後に、JGoodiesのFormLayoutを使用しまし

private void initItemsPanel() {
    JPanel itemsPanel = new JPanel();
    itemsPanel.setLayout(new FormLayout("left:pref, fill:400px, pref:grow", "fill:20px, fill:4px, fill:max(20px;pref)"));
    CellConstraints cc = new CellConstraints();

    // the left table
    JTable leftTable = new JTable();
    itemsPanel.add(leftTable.getTableHeader(), cc.xywh(1, 1, 1, 2));
    itemsPanel.add(leftTable, cc.xywh(1, 3, 1, 1));

    // the text pane
    itemsPanel.add(new JTextPane(), cc.xywh(2, 2, 1, 2));

    // the right table
    JTable rightTable = new JTable();
    rightTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
    itemsPanel.add(rightTable.getTableHeader(), cc.xywh(3, 1, 1, 2));
    itemsPanel.add(rightTable, cc.xywh(3, 3, 1, 1));

    // Adding the items panel to dialog panel
    JScrollPane itemsScrollPane = new JScrollPane(itemsPanel);
    itemsScrollPane.getVerticalScrollBar().setUnitIncrement(3);

    dialogPanel.add(itemsScrollPane, BorderLayout.CENTER); // with dialogPanel previously instantiated
}

私がテストしたすべての状況(サイズ変更、コンポーネントの空/充填など)については、より予測可能でした。

getTableHeader()JTableはJScrollPaneに直接存在しないため、明示的に呼び出す必要があることに注意してください。

ありがとう。

于 2012-09-05T15:39:25.757 に答える