1

私はJTableとを持っていJComboBoxます。コンボボックスで 1 つの項目を選択すると特定の列が非表示になり、コンボボックスで別の項目を選択すると同じ非表示の列が再表示されるようにします。私は書きます、

jTable1.getColumnModel().getColumn(8).setMinWidth(0)
jTable1.getColumnModel().getColumn(8).setMaxWidth(0)
jTable1.getColumnModel().getColumn(8).setWidth(0)

列を非表示にするためですが、もう一度書くと

jTable1.getColumnModel().getColumn(8).setMinWidth(100)
jTable1.getColumnModel().getColumn(8).setMaxWidth(100)
jTable1.getColumnModel().getColumn(8).setWidth(100)

非表示の列は表示されません。

4

4 に答える 4

1

上記のコードの問題は何ですか?

ここに文書化されているクレオパトラの有益な洞察に加えて、一部の L&F は多かれ少なかれ協力的です。たとえば、列の幅を手動で強制的にゼロにすることはできますが、 の後にドラッグするのに十分な幅を常に残します。com.apple.laf.AquaLookAndFeelsetMinWidth(0)

于 2012-10-21T13:37:07.910 に答える
1

理由は、setMin/setMax の両方が関係を強制するためです。

min <= width <= max

それがメソッド呼び出しの順序です

// hiding
column.setMinWidth(0);
column.setMaxWidth(0);

// showing
column.setMaxWidth(100);
column.setMinWidth(100);

内部で処理される setWidth を呼び出す必要がないことに注意してください。

つまり、サイズを強制することは..ハックです。クリーンなソリューションを使用することを検討してください.SwingXのようなフレームワークは(他の優れた点の中でも:-)列の非表示を完全にサポートしています

于 2012-10-21T09:52:38.670 に答える
0
for (int i = 0; i < 2; i++) {
    jTable1.getColumnModel().getColumn(8).setMinWidth(100)
    jTable1.getColumnModel().getColumn(8).setMaxWidth(100)
    jTable1.getColumnModel().getColumn(8).setWidth(100)
}

列が表示されます。

于 2012-10-21T08:42:30.530 に答える