1

簡単な答えを探しているだけです:JTableをJScrollPaneのcolumnHeaderとして使用することは可能ですか?

列幅と列タイトルが異なる構成済みのJTableがあり、スクロールペインのcolumnHeaderとしてヘッダーを使用する予定です。どうすればこれを達成できますか?私はテーブルを設定しました

scrollPane.setColumnHeaderView(table);

しかし、それは表示されません。

ギヨームポレットのおかげで

scrollpane.setColumnHeaderView(table.getTableHeader());

しかし、テーブルで異なる値を設定したにもかかわらず、すべての列の幅は同じになりました。テーブルの列に異なる幅を表示させるにはどうすればよいですか?

4

1 に答える 1

3

私があなたを正しく理解しているなら、あなたはあなたのテーブルの列ヘッダーをビューポートの列ヘッダーに表示したいのですが、ビューポートビューに何か他のものが欲しいですか?

次に、テーブルヘッダーを取得し、それをビューポートの列ヘッダーとして設定する必要があります。

次に例を示します。

import java.awt.BorderLayout;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestTableHeader {

    protected void initUI() {
        Vector<Vector<Object>> data = new Vector<Vector<Object>>();
        Vector<String> colNames = new Vector<String>();
        for (int i = 0; i < 5; i++) {
            colNames.add("Col-" + (i + 1));
        }

        table = new JTable(data, colNames);
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        scrollpane = new JScrollPane();
        scrollpane.setColumnHeaderView(table.getTableHeader());
        scrollpane.setViewportView(new JLabel("some label in the viewport view"));
        frame.add(scrollpane, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }

    private JTable table;
    private JScrollPane scrollpane;

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException,
            UnsupportedLookAndFeelException {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new TestTableHeader().initUI();
            }
        });
    }

}
于 2012-10-23T16:56:20.980 に答える