Reputation: 137282
I'm trying some GUI development in Java and when I added the following code, I got a runtime error during initialization of the class:
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)
{
}
}
}
}
The error I get is:
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)
Does anyone has any idea why?
Binyamin
Upvotes: 3
Views: 395
Reputation: 6525
I think Erica is right about the non-standard look & feel. CUIAquaComboBox
doesn't sound like a standard element.
If you're not sure what look & feel (LAF) you are using, call System.out.println(UIManager.getLookAndFeel());
to check.
More importantly, try calling this in your main method before your GUI starts and see if it makes a difference:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
This will use the native LAF for your current operating system (if one can be found - and that should work fine if you're using Windows, Mac, Linux, Solaris etc.)
Upvotes: 1
Reputation: 2251
This looks like an issue with your custom look and feel. I encountered a similar problem once before, when using custom looks and feels. It is described here:
https://bugs.java.com/bugdatabase/view_bug?bug_id=4711700
That was for the JFileChooser widget, not a combo box, but it might be related.
The first thing you should try is reverting to the default "metal" look and feel. If that works, then it might be a problem with that specific L&F. I haven't used the CUIAqua L&F before, but I think it's the official Apple Java L&F. You might also like to try switching it out for QuaQua. It's an alternative Mac-like L&F, which might (depending on the actual bug) avoid the problem.
Upvotes: 2