У меня здесь небольшая проблема. В настоящее время я работаю в графическом интерфейсе, чтобы организовать свою серию, которую я смотрел/смотрел. В этой части я хотел, чтобы фрейм открывался со всеми разными жанрами в JCheckBox
'es, который должен возвращать boolean
-array, где каждый индекс представляет жанр этого индекса и значение, если было нажато JCheckBox
.Java JOptionPane с прокручиваемым списком checkbox
Я decied сделать это Cо спаренной 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
'es, который отображается в JOptionPane
? Или есть лучший способ обойти?
Спасибо за быструю помощь, она работает: D – TheJustikar1996
[Не используйте 'setPreferredSize()', когда вы на самом деле означает для переопределения 'GetPreferredSize()'] (HTTP: // StackOverflow. ком/кв/7229226/230513). – trashgod