6

私がやりたいのは、JTextField の代わりに JTextArea を持つ JOptionPane inputDialog を持つことだけです。
JTextArea を Message パラメータの中に入れてみました

Object[] inputText = new Object[]{new JLabel("Enter Graph Information"),
                                  newJTextArea("",20,10)};
graphInfo=(String)JOptionPane.showInputDialog(null,
                                              inputText,
                                              "Create Graph",
                                              JOptionPane.PLAIN_MESSAGE,
                                              null,
                                              null,
                                              "");

しかし、まだ下部にテキスト フィールドがあり、JTextArea からテキストを取得できません。元のテキスト フィールドを削除して jtextarea からテキストを取得するか、テキスト フィールドをテキスト エリアに完全に置き換える方法はありますか? 可能であればカスタム ダイアログを作成する必要がないようにしようとしていますが、これは簡単に実行できるように思われますか?

4

1 に答える 1

8

あなたは正しい道を進んでいます。showConfirmDialogの代わりに使用する必要があるだけです。これにより、「メッセージ」としてshowMessageDialogany を渡し、 内に表示できます。その後、ユーザーが [OK] をクリックすると、の内容をキャプチャできます。例えばComponentJDialogJTextArea

int okCxl = JOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(this),
                                    textArea,
                                    "Enter Data",
                                    JOptionPane.OK_CANCEL_OPTION)

if (okCxl == JOptionPane.OK_OPTION) {
  String text = textArea.getText();
  // Process text.
}

と組み合わせて JLabel を表示したい場合は、両方を含む をJTextArea作成して渡すことができます。例えばJPanelComponent

JTextArea textArea = ...
JPanel pnl = new JPanel(new BorderLayout());

pnl.add(new JLabel("Please enter some data:"), BorderLayout.NORTH);
pnl.add(textArea, BorderLayout.CENTER);

JOptionPane.show...
于 2010-01-18T21:51:52.937 に答える