2

JTextFields@runtimeをJPanelに追加するJavaアプリケーションがあります。基本的に、ユーザーがボタンをクリックすると、新しいJTextFieldが追加され、もう一度クリックが追加されます...

新しいJTextFieldはそれぞれ、前のJTextFieldのすぐ下にあります。明らかに、私はすぐにスペースを使い果たしてしまうので、JScrollPaneを使おうとしています。それは、何を試しても機能しないためです。

  1. JPanelを右クリックし、スクロールペインで囲みます。動作しませんでした。
  2. いくつかの例を読んだ後、JScrollPaneコンストラクターの引数としてJPanelが必要であることに気付きました。これは、ScrollPaneとCustomizeCodeを右クリックして行いました。どうやら自動生成されたコードはNetBeansで保護されており、これらすべての宣言などを手動で変更することはできないためです。それでも動作しません。
  3. JPanelやJScrollPaneのPreferedSizeをnullに設定しようとしましたが、役に立ちませんでした。
  4. JScrollPaneは、TabJPanel(TabbedPaneのタブ)と呼ぶことができる子です。基本的に、JFrame、JPanel(テキストフィールドを保持)、TabJPanel、およびJScrollPaneの間で可能なすべての親子関係を試し、それらの関係を台無しにしようとしましたが、何も機能しませんでした。
  5. また、念のため、VerticalScrollBarを「常に表示」しました。スクロールバーが表示されます。JPanelにJTextFieldsを入力しても影響はありません。
  6. JTextFieldが多すぎると、JPanelの下の境界線の「下」に移動し、表示されなくなります。

関連する場合、新しいJTextFieldsを追加するためのコードは次のようになります。

JTextField newField = new JTextField( columns );
Rectangle coordinates = previousTextField.getBounds();
newField.setBounds(coordinates.x , coordinates.y + 50, coordinates.width, coordinates.height);

JPanel.add(newField);
JPanel.revalidate();
JPanel.repaint();

長い投稿で申し訳ありませんが、私はできるだけ多くの情報を提供しようとしています。初心者であるため、正確に関連するものとそうでないものがわからないためです。前もって感謝します :)

4

3 に答える 3

2

今別の答えがあるので、私も私の提案を追加しています。

JTableこれは、単一の列でを使用する場合の問題とまったく同じように聞こえます。まだ編集できませんJList(編集できない可能性があります)。

JTableはレイアウトの問題を処理し、テーブルを介して値に簡単にアクセスできます。

独自のものを使用しTableModel(この場合は単純なVectorもので十分です)、それに値を追加します。

于 2010-01-13T06:57:53.467 に答える
0

あなたが持っているオプションは、コンポーネントに直接境界を設定する代わりに、 LayoutManagerを利用することです。これをテストするには、配置を垂直に設定した単純な単一列のGridLayoutで概念を証明する必要があります。

panel.setLayout(new GridLayout(0,1));

パラメータのゼロをrows使用すると、必要に応じて行をレイアウトに追加できます。

于 2010-01-13T06:48:59.280 に答える
0

この方法で、スクロールペインを追加し、パネルを作成していくつかのコンポーネントで埋めてから、追加するコンポーネントにスクロールペインを作成し、すべての詳細が含まれるパネルを切り取って貼り付け、スクロールペインのサイズを変更します。コンポーネントは、スクロールペインを右クリックしてこのコンテナのデザインを選択するよりも大きなスペースを占めるため、スクロールペインのサイズを大きくして、コンポーネントをいくつでも追加できます。

于 2013-05-26T15:51:39.100 に答える