テキスト フィールドmin 1 max 12を追加できる JPanel を作成したいと考えています。(そのため、6 行 2 列で 12 個のテキスト フィールドを格納するのに十分なスペースがある JPanel を作成することにしました)。ユーザーがチェックするチェック ボックスの数によって異なります。さらに、これらのテキスト フィールドは、この JPanelで左端揃えで上から下に表示される必要があります。そして、これらのチェックボックスの 1 つがオフになるたびに、指定されたテキストフィールドが JPanel から削除され、残りはこの空のスペースに移動します (スペースをカバーするために上にシフトします)。
ということで、最初からすべて作成せず、必要に応じてテキストフィールドを作成し、setVisible(false) にします。これはより良い解決策だと思います。
例えば:
//each JTexyField have the same size
JPanel panel = new JPanel(new LayoutManager()); //in my case BoxLayout
If(checkboxEuro == chcecked) {
JTextField fieldEuro = new JTextField();
panel.add(fieldEuro);
}
else if(checkbox2 == ...) panel.add(fieldDolar);
...
If(checkboxDolar = = unchecked) panel.remove(fieldDolar);
(そして、このボタンがどこに表示されたかは気にしません。重要なことは、このボタンは、このパネルの既存のボタンの後に表示される必要があるということです)
私が得るもの
JPanel の下部に十分なスペースがない場合、LM はこのテキスト フィールドを上から次の列に追加する必要があります。この例では、別の (7 番目の) テキスト フィールドを追加しようとした 6x2 で、この列に十分なスペースがない場合、2 番目の列に表示されるはずですが、そうではありません。BoxLayout を使用すると、7 番目のテキスト フィールドが JPanel 上に半分、上半分に表示されました。
私は何をすべきか?Layout Manager を変更しますか、それとも JPanel の境界を越えることを許可しないオプションがありますか? (これが一番重要)
私はこれを取得します: 、そしてこれが欲しい:
(言語については申し訳ありません - 初めてです)
- - 編集 - -
誤解がある場合:これを正しく理解させてください。TextField (この例では 7 番目) を追加するスペースがない場合に行を「スクロール」するのに役立つメソッド/オプションを別の LM で探しています。移動する必要があります。 TOPの次(列)へ。2 列は定義していませんが、この JPanel の領域は、JTextField の 2 列を保持するスペースがあったように思わせます。たとえば、12 個のフィールドすべてを追加して削除すると、残りの 2 番目のフィールドが上に移動して、このスペースをカバーする必要があります。
1 4 2 5
2 5 remove 1 3 6
3 6 4