首頁 >Java >java教程 >如何在沒有 JOptionPane.showInputDialog() 的情況下在 Java 中建立具有多個欄位的彈出表單?

如何在沒有 JOptionPane.showInputDialog() 的情況下在 Java 中建立具有多個欄位的彈出表單?

Barbara Streisand
Barbara Streisand原創
2024-11-07 08:26:03661瀏覽

How to Create a Popup Form with Multiple Fields in Java Without JOptionPane.showInputDialog()?

具有多個欄位的簡單彈出表單

問題:

有沒有辦法建立不使用JOptionPane.showInputDialog() 的情況下具有多個欄位的彈出表單?

答案:

考慮使用JOptionPane 方法

雖然使用JOptionPane 方法

雖然使用JOptionPane 方法可能一開始就會被忽略,因為它只會被忽略限於一行輸入,但它提供了諸如showInputDialog() 和showMessageDialog() 之類的選項,可以容納自訂表單。

替代方法

package gui;

import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.*;

/** @see https://stackoverflow.com/a/3002830/230513 */
class JOptionPaneTest {

    private static void display() {
        String[] items = {"One", "Two", "Three", "Four", "Five"};
        JComboBox<String> combo = new JComboBox<>(items);
        JTextField field1 = new JTextField("1234.56");
        JTextField field2 = new JTextField("9876.54");
        JPanel panel = new JPanel(new GridLayout(0, 1));
        panel.add(combo);
        panel.add(new JLabel("Field 1:"));
        panel.add(field1);
        panel.add(new JLabel("Field 2:"));
        panel.add(field2);
        int result = JOptionPane.showConfirmDialog(null, panel, "Test",
            JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
        if (result == JOptionPane.OK_OPTION) {
            System.out.println(combo.getSelectedItem()
                + " " + field1.getText()
                + " " + field2.getText());
        } else {
            System.out.println("Cancelled");
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                display();
            }
        });
    }
}

對於高度自訂的解決方案,請考慮以下程式碼:

    其他注意事項:
  • 使用自訂表單JOptionPane 取決於模態的適用性,而不是組件的數量。
可以引用 Dialog Focus 將焦點設定到特定組件。

以上是如何在沒有 JOptionPane.showInputDialog() 的情況下在 Java 中建立具有多個欄位的彈出表單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn