JOptionPane 组件似乎不同
JOptionPane component seems differ
当我使用以下代码时,JOptionPane 的外观似乎有所不同,具体取决于数组中保存的数据项数量。有时是下拉滚动列表(类似于 JComboBox)。在其他时候,当数组包含更多项时,类似于 JList 的组件。
Object wid = JOptionPane.showInputDialog(null,
"Choose Width",
"Select a Width", JOptionPane.QUESTION_MESSAGE,
null, width, "9");
关于如何控制显示哪种类型的组件,以及它在大小和颜色方面的外观,我们将不胜感激?
如果您使用 showInputDialog
方法,您将无法控制对话框的显示方式
是建造或设计的。此方法的存在是为了快速构建输入
当您不关心它的外观或行为时,该对话框会起作用。
这完全取决于环境的外观。
在这种情况下主要是指
19 个或更少的元素导致 JComboBox
,20 个或更多的元素导致 JList
.
如果您想完全控制 GUI 组件,您需要自己设计它们。
它并不像听起来那么难。看看这段代码。无论它有多少项目,它总是会产生一个组合框。
final int items = 100;
// create items
String[] width = new String[items];
for(int i = 0; i < items; i++) width[i] = Integer.toString(i);
// create the panel
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,1));
JLabel label = new JLabel("Choose Width");
JComboBox<String> cmbBox = new JComboBox<>(width);
cmbBox.setSelectedIndex(8);
panel.add(label);
panel.add(cmbBox);
// show dialog
int res = JOptionPane.showConfirmDialog(null, panel,
"Select a Width", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, null);
// get selection
if(res == JOptionPane.OK_OPTION){
String sel = String.valueOf(cmbBox.getSelectedItem());
System.out.println("you selected: " + sel);
}
当我使用以下代码时,JOptionPane 的外观似乎有所不同,具体取决于数组中保存的数据项数量。有时是下拉滚动列表(类似于 JComboBox)。在其他时候,当数组包含更多项时,类似于 JList 的组件。
Object wid = JOptionPane.showInputDialog(null,
"Choose Width",
"Select a Width", JOptionPane.QUESTION_MESSAGE,
null, width, "9");
关于如何控制显示哪种类型的组件,以及它在大小和颜色方面的外观,我们将不胜感激?
如果您使用 showInputDialog
方法,您将无法控制对话框的显示方式
是建造或设计的。此方法的存在是为了快速构建输入
当您不关心它的外观或行为时,该对话框会起作用。
这完全取决于环境的外观。
在这种情况下主要是指
19 个或更少的元素导致 JComboBox
,20 个或更多的元素导致 JList
.
如果您想完全控制 GUI 组件,您需要自己设计它们。
它并不像听起来那么难。看看这段代码。无论它有多少项目,它总是会产生一个组合框。
final int items = 100;
// create items
String[] width = new String[items];
for(int i = 0; i < items; i++) width[i] = Integer.toString(i);
// create the panel
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,1));
JLabel label = new JLabel("Choose Width");
JComboBox<String> cmbBox = new JComboBox<>(width);
cmbBox.setSelectedIndex(8);
panel.add(label);
panel.add(cmbBox);
// show dialog
int res = JOptionPane.showConfirmDialog(null, panel,
"Select a Width", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, null);
// get selection
if(res == JOptionPane.OK_OPTION){
String sel = String.valueOf(cmbBox.getSelectedItem());
System.out.println("you selected: " + sel);
}