6

現在、私は持っていJOptionPaneます。ボタンをクリックすると、次の行を実行しています。

JOptionPane.showInputDialog(this,"Enter your message","Messages",2);

テキストボックスのあるポップアップが開きます。このテキスト ボックスは、約 40/50 文字を受け入れます。実際、私の要件は、これを停止しているこのテキスト ボックスに長いメッセージ (最大 300 文字) を入力することです。では、この入力ダイアログにテキスト領域を作成したいと思いますか? どのように可能ですか?より良い解決策はありますか?前もって感謝します。

4

4 に答える 4

5

公式チュートリアルにはその例が含まれており、別の例はこちら

于 2011-10-14T09:18:50.383 に答える
3

(タイプの)に をJTextArea挿入し、ダイアログが破棄されたら、テキスト領域の内容を照会します (そして、返された結果をチェックして、ダイアログがユーザーによってキャンセルされていないことを確認します)。JOptionPane.showConfirmDialog()QUESTION_MESSAGE

于 2011-10-14T09:20:51.400 に答える
0

JOptionPane を使用することが目的に最適なオプションであるかどうかはわかりませんが、テキスト領域またはその他のフォーム コンポーネントを OptionPane に追加できます。特に TextArea を要求されたため、次の例では JTextField と JTextArea を追加しました。

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SpringLayout;

public class Main {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Option Pane Text Area Example");

        final SpringLayout layout = new SpringLayout();

        final JPanel panel = new JPanel(layout);
        panel.setPreferredSize(new Dimension(250, 160));

        JLabel lblName = new JLabel("Name");
        panel.add(lblName);
        JTextField txtName = new JTextField(10);
        txtName.setBorder(BorderFactory.createLineBorder(Color.black));
        panel.add(txtName);

        JLabel lblAddress = new JLabel("Address");
        panel.add(lblAddress);
        JTextArea txtAddress = new JTextArea();
        txtAddress.setBorder(BorderFactory.createLineBorder(Color.black));
        txtAddress.setLineWrap(true);
        txtAddress.setWrapStyleWord(true);
        JScrollPane scrollPane = new JScrollPane(txtAddress,
                   JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
                   JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setPreferredSize(new Dimension(250, 100));
        panel.add(scrollPane);

        layout.putConstraint(SpringLayout.WEST, lblName,
                             0,
                             SpringLayout.WEST, panel);
        layout.putConstraint(SpringLayout.NORTH, lblAddress,
                             10,
                             SpringLayout.SOUTH, lblName);

        layout.putConstraint(SpringLayout.WEST, txtName,
                             25,
                             SpringLayout.EAST, lblName);
        layout.putConstraint(SpringLayout.NORTH, scrollPane,
                             10,
                             SpringLayout.SOUTH, lblAddress);


        int result = JOptionPane.showConfirmDialog(frame, panel,
                "Text Box and Text Area Example", JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.PLAIN_MESSAGE);

        if (result == JOptionPane.YES_OPTION) {
            System.out
                    .println(txtName.getText() + ",\n" + txtAddress.getText());
        } else {
            System.out.println("Canceled");
        }

        System.exit(0);
    }
}

ただし、このような複雑な入力フォームには、JOptionPane の代わりに JDialog を使用することをお勧めします。

于 2015-03-08T12:11:59.377 に答える