我在这里有一个小问题。我目前正在使用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/

10-13 23:57