当我使用下面的代码时,JOptionPane的外观似乎会有所不同,具体取决于数组中保存的数据项数。有时候是一个下拉滚动列表(类似于JComboBox)。在其他时候,当数组包含更多项时,组件类似于JList。
Object wid = JOptionPane.showInputDialog(null,
"Choose Width",
"Select a Width", JOptionPane.QUESTION_MESSAGE,
null, width, "9");
对于如何控制显示哪种类型的组件及其在尺寸和颜色方面的外观,我们将不胜感激?
答案 0 :(得分:1)
如果使用方法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);
}