JComboBox вызывает ошибку во время выполнения
Я пытаюсь разработать графический интерфейс на Java, и когда я добавил следующий код, во время инициализации класса я получил ошибку во время выполнения:
public class Search_Album_Main_Tab extends JPanel{
JComboBox search_list;
JTextArea searched_data;
JButton search_button;
Results_Main_Tab rmt;
Search_Action_Listener listener;
public Search_Album_Main_Tab(Results_Main_Tab results_main_tab)
{
String[] search_options = {"Album", "Artist", "Genre", "ID", "Year"};
setLayout(new GridLayout(3,1));
rmt = results_main_tab;
listener = new Search_Action_Listener();
/* Searched data */
searched_data = new JTextArea();
/* Search button */
search_button = new JButton("Search Album");
search_button.addActionListener(listener);
/* Drop down menu */
search_list = new JComboBox(search_options);
add(search_list);
add(searched_data);
add(search_button);
}
private class Search_Action_Listener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == search_button)
{
}
}
}
}
Я получаю ошибку:
dcm_gui.GUI at localhost:53806
Thread [main] (Suspended (exception NullPointerException))
CUIAquaComboBox.applySizeFor(JComponent, CoreUIConstants$Size) line: 454
CUIAquaUtilControlSize.applyUISizing(JComponent, CoreUIConstants$Size) line: 99
CUIAquaUtilControlSize.access$200(JComponent, CoreUIConstants$Size) line: 13
CUIAquaUtilControlSize$PropertySizeListener.applyComponentSize(JComponent, Object) line: 121
CUIAquaUtilControlSize.addSizePropertyListener(JComponent) line: 25
CUIAquaComboBox.installListeners() line: 47
CUIAquaComboBox(BasicComboBoxUI).installUI(JComponent) line: 229
CUIAquaComboBox.installUI(JComponent) line: 30
JComboBox(JComponent).setUI(ComponentUI) line: 653
JComboBox.setUI(ComboBoxUI) line: 238
JComboBox.updateUI() line: 247
JComboBox.init() line: 212
JComboBox.<init>(Object[]) line: 178
Search_Album_Main_Tab.<init>(Results_Main_Tab) line: 36
GUI.main(String[]) line: 28
Daemon Thread [AWT-AppKit] (Running)
/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java (Oct 10, 2010 11:55:27 PM)
У кого-нибудь есть идеи почему?
Биньямин
2 ответа
Это похоже на проблему с вашим собственным внешним видом. Однажды я сталкивался с подобной проблемой, когда использовал пользовательский внешний вид. Это описано здесь:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4711700
Это было для виджета JFileChooser, а не для поля со списком, но это может быть связано.
Первое, что вы должны попробовать - вернуться к стандартному "металлическому" внешнему виду. Если это работает, то это может быть проблема с этим конкретным L&F. Я не использовал CUIAqua L&F раньше, но я думаю, что это официальный Apple Java L&F. Вы также можете попробовать переключить его на QuaQua. Это альтернативный Mac-подобный L&F, который может (в зависимости от фактической ошибки) избежать проблемы.
Я думаю, что Эрика права насчет нестандартного внешнего вида. CUIAquaComboBox
не звучит как стандартный элемент.
Если вы не уверены, какой внешний вид (LAF) вы используете, позвоните System.out.println(UIManager.getLookAndFeel());
Проверять.
Что еще более важно, попробуйте вызвать это в вашем основном методе до того, как ваш GUI запустится, и посмотрите, имеет ли это значение
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
При этом будет использоваться собственный LAF для вашей текущей операционной системы (если она будет найдена - и это должно работать нормально, если вы используете Windows, Mac, Linux, Solaris и т. Д.)