简单的弹出式Java表单,至少包含两个字段

当用户单击一个按钮时,我想显示一个至少应包含两个JTextField和两个JLabel的弹出窗体,因此不可能使用JOptionPane.showInputDialog

您至少应该考虑一个JOptionPane方法,如showInputDialog()showMessageDialog()

附录:使用JOptionPane的选择更多地取决于模态的适用性,而不是所示组件的数量。 另请参见如何制作对话框

附录:如@camickr的评论中所述,您可以使用此处引用的Dialog Focus中讨论的方法将焦点设置为特定组件。

图片

 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 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(); } }); } }