我在这里有一个小问题。我目前正在使用GUI来组织我正在观看/观看过的剧集。在这一部分中,我希望打开一个框架,其中包含JCheckBox
的所有不同流派,应该返回一个boolean
数组,其中每个索引代表该索引的流派,以及单击了JCheckBox
时的值。
我决定这样做是因为JOptionPane
,因为JOptioPane.showInputPane()
-funktion提供了一个Object
-array作为参数,它将显示在JOptionPane
中。至此,我的代码运行良好:
String[] genres = IO.getGenres();
JCheckBox[] check = new JCheckBox[genres.length];
for(int i = 0; i < genres.length; i++)
check[i] = new JCheckBox(genres[i]);
boolean[] ret = new boolean[genres.length];
int answer = JOptionPane.showConfirmDialog(null, new Object[]{"Choose gernes:", check}, "Genres" , JOptionPane.OK_CANCEL_OPTION);
if(answer == JOptionPane.OK_OPTION)
{
for(int i = 0; ; i++)
ret[i] = check[i].isSelected();
}else if(answer == JOptionPane.CANCEL_OPTION || answer == JOptionPane.ERROR_MESSAGE)
{
for(int i = 0; i < genres.length; i++)
ret[i] = false;
}
return ret;
问题是
JOptionPane
越来越大,种类繁多。那么,如何制作JCheckBox
的可滚动列表,该列表显示在JOptionPane
中?还是有更好的解决方法? 最佳答案
您可以简单地在面板中布置复选框,然后将环绕式滚动窗格转移到JOptionPane。像这样:
JPanel layoutPanel = new JPanel(new GridLayout(genres.length, 1));
for (JCheckBox c : check) {
layoutPanel.add(c);
}
JScrollPane scroller = new JScrollPane(layoutPanel);
scroller.setPreferredSize(new Dimension(300, 500));
int answer = JOptionPane.showConfirmDialog(null, scroller, "Genres" , JOptionPane.OK_CANCEL_OPTION);
关于java - Java JOptionPane可以滚动的检查按钮列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26409792/