2

入力してボタンを作成できることを知っています

JButton x= new JButton("Something");
x.addActionListener(this);

しかし、ボタンが入力を提供するユーザーのテキストフィールドを作成するようにアクションリスナーを作成するにはどうすればよいですか?また、そのテキストボックスからテキストを読み取るにはどうすればよいですか?

4

1 に答える 1

5

Swingにはテキストボックスのような動物はありません-JTextFieldのことですか?もしそうなら、...

  • 単にそれを行うだけでJTextFieldを作成します-new JTextField()
  • add(...)次に、JPanelなどの適切なコンテナを呼び出してGUIに追加します。
  • 次に、テキストを呼び出すだけでテキストを読むことができgetText()JTextFieldチュートリアルでこれらすべてを説明します。
  • JTextFieldを受け入れるコンテナーは、新しいコンポーネントに対応できるレイアウトを備えている必要があるため、レイアウトマネージャーのチュートリアルも読む必要があります。
  • また、コンポーネントを追加または削除した後にコンテナを呼び出しrevalidate()repaint()、コンテナのレイアウトマネージャがレイアウトを更新し、それ自体を再描画することを認識できるようにする必要があります。

これは、実行する必要があることの一般的な要点にすぎません。より具体的なアドバイスが必要な場合は、問題の詳細、これまでに試したこと、うまくいったこと、失敗したことを教えてください。

編集
あなたが尋ねる:

しかし、textFieldが現在のコンテナへの追加ではなく、「ポップアップ」になるようにするにはどうすればよいですか。私はそれが現在のコンテナに追加されるようにそれを持っています...しかしそれは私が必要とするものではありません。

  • これを行う最も簡単な方法は、JOptionPane.showInputDialog(...)を表示することです。

例えば:

  // myGui is the currently displayed GUI
  String foo = JOptionPane.showInputDialog(myGui, "Message", "Title",
        JOptionPane.PLAIN_MESSAGE);
  System.out.println(foo);

これは次のようになります。
ここに画像の説明を入力してください

  • これを行うためのより複雑な方法は、GUIを作成してJOptionPaneに表示し、GUIにその内容を照会することです。

例えば:

  JTextField fooField = new JTextField(15);
  JTextField barField = new JTextField(15);
  JPanel moreComplexPanel = new JPanel(new GridBagLayout());
  GridBagConstraints gbc = new GridBagConstraints();
  gbc.insets = new Insets(5, 5, 5, 5);
  gbc.weightx = 1.0;
  gbc.weighty = 1.0;
  gbc.anchor = GridBagConstraints.WEST;
  moreComplexPanel.add(new JLabel("Foo:"), gbc);
  gbc.gridx = 1;
  gbc.anchor = GridBagConstraints.EAST;
  moreComplexPanel.add(fooField, gbc);
  gbc.gridx = 0;
  gbc.gridy = 1;
  gbc.anchor = GridBagConstraints.WEST;
  moreComplexPanel.add(new JLabel("Bar:"), gbc);
  gbc.gridx = 1;
  gbc.anchor = GridBagConstraints.EAST;
  moreComplexPanel.add(barField, gbc);

  int result = JOptionPane.showConfirmDialog(myGui, moreComplexPanel, 
        "Foobars Forever", JOptionPane.OK_CANCEL_OPTION, 
        JOptionPane.PLAIN_MESSAGE);
  if (result == JOptionPane.OK_OPTION) {
     System.out.println("foo = " + fooField.getText());;
     System.out.println("bar = " + barField.getText());;
  }

これは次のようになります:
ここに画像の説明を入力してください

于 2012-04-10T01:08:39.527 に答える