当我使用以下代码时,JOptionPane 的外观似乎有所不同,具体取决于数组中保存的数据项数。有时是下拉滚动列表(类似于 JComboBox)。在其他时候,当数组容纳更多项目时,组件类似于 JList。
Object wid = JOptionPane.showInputDialog(null,
"Choose Width",
"Select a Width", JOptionPane.QUESTION_MESSAGE,
null, width, "9");
对于如何控制显示哪种类型的组件及其尺寸和颜色的外观,有任何建议吗?
最佳答案
如果您使用方法showInputDialog
,您将无法控制对话框的显示方式
被 build 或设计。该方法的存在是为了提供一种快速构建输入的方法
当您不关心它的外观或行为时,它会起作用。
这一切都取决于环境的外观和感觉。
在这种情况下,这主要意味着
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);
}
关于java - JOptionPane 组件似乎有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571644/