Я пытаюсь разработать графический интерфейс на 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());
, чтобы проверить.
Что еще более важно, попробуйте вызвать это в своем основном методе до запуска графического интерфейса и посмотрите, имеет ли это значение:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Это будет использовать собственный LAF для вашей текущей операционной системы (если он может быть найден - и это должно работать нормально, если вы используете Windows, Mac, Linux, Solaris и т. Д.)
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
null
где-нибудь в конструктореSearch_Album_Main_Tab
. Что в строке 36?search_list = new JComboBox(search_options);
, а search_options - это строковый массив:String[] search_options = {"Album", "Artist", "Genre", "ID", "Year"};