-
Bug
-
Resolution: Fixed
-
P4
-
7
-
b30
-
x86
-
windows_xp
-
Not verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8015724 | 8 | Anton Litvinov | P4 | Resolved | Fixed | b94 |
JDK-8018841 | 7u45 | Anton Litvinov | P4 | Closed | Fixed | b01 |
FULL PRODUCT VERSION :
java version "1.5.0_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot(TM) Client VM (build 1.5.0_04-b05, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows 2000 [Version 5.00.2195]
A DESCRIPTION OF THE PROBLEM :
In the class BasicComboBoxUI in the method installComponents() will throw a NullPointerException if the createArrowButton() returns null. The installComponents() method does check if it is null before it calls the configureArrowButton(). All that is needed is the call to comboBox.add( arrowButton ); be placed inside the null check. Like this:
protected void installComponents() {
arrowButton = createArrowButton();
// comboBox.add( arrowButton ); //move this line from here
if (arrowButton != null) {
comboBox.add( arrowButton ); // to here
configureArrowButton();
}
if ( comboBox.isEditable() ) {
addEditor();
}
comboBox.add( currentValuePane );
}
import javax.swing.*;
import javax.swing.plaf.basic.*;
public class Test{
protected static class TestBasicComboBoxUI extends BasicComboBoxUI{
protected JButton createArrowButton() {
return null;
}
}
public static void main(String[] args) {
JComboBox combobox = new JComboBox();
combobox.setUI(new TestBasicComboBoxUI());
}
}
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "Thread-6" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1019)
at java.awt.Container.add(Container.java:351)
at javax.swing.plaf.basic.BasicComboBoxUI.installComponents(BasicComboBoxUI.java:646)
at javax.swing.plaf.basic.BasicComboBoxUI.installUI(BasicComboBoxUI.java:230)
at javax.swing.JComponent.setUI(JComponent.java:650)
at javax.swing.JComboBox.setUI(JComboBox.java:238)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.table.InformationTableCellEditor.createPresetTypeComboBox(InformationTableCellEditor.java:68)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.table.InformationTableCellEditor.<init>(InformationTableCellEditor.java:57)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.getInformationTable(MultipleDialerPanel.java:309)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.getInformationScrollPane(MultipleDialerPanel.java:333)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.getDataPanel(MultipleDialerPanel.java:208)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.AbstractDialerPanel.getMainSplitPane(AbstractDialerPanel.java:145)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.AbstractDialerPanel.<init>(AbstractDialerPanel.java:81)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.<init>(MultipleDialerPanel.java:59)
at mil.navy.spawar.rcp.gui.dialerboard.DialerboardPanel.getMultipleDialerPanel(DialerboardPanel.java:130)
at mil.navy.spawar.rcp.gui.dialerboard.DialerboardPanel$1.run(DialerboardPanel.java:86)
at java.lang.Thread.run(Thread.java:595)
REPRODUCIBILITY :
This bug can be reproduced always.
java version "1.5.0_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05)
Java HotSpot(TM) Client VM (build 1.5.0_04-b05, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows 2000 [Version 5.00.2195]
A DESCRIPTION OF THE PROBLEM :
In the class BasicComboBoxUI in the method installComponents() will throw a NullPointerException if the createArrowButton() returns null. The installComponents() method does check if it is null before it calls the configureArrowButton(). All that is needed is the call to comboBox.add( arrowButton ); be placed inside the null check. Like this:
protected void installComponents() {
arrowButton = createArrowButton();
// comboBox.add( arrowButton ); //move this line from here
if (arrowButton != null) {
comboBox.add( arrowButton ); // to here
configureArrowButton();
}
if ( comboBox.isEditable() ) {
addEditor();
}
comboBox.add( currentValuePane );
}
import javax.swing.*;
import javax.swing.plaf.basic.*;
public class Test{
protected static class TestBasicComboBoxUI extends BasicComboBoxUI{
protected JButton createArrowButton() {
return null;
}
}
public static void main(String[] args) {
JComboBox combobox = new JComboBox();
combobox.setUI(new TestBasicComboBoxUI());
}
}
ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "Thread-6" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1019)
at java.awt.Container.add(Container.java:351)
at javax.swing.plaf.basic.BasicComboBoxUI.installComponents(BasicComboBoxUI.java:646)
at javax.swing.plaf.basic.BasicComboBoxUI.installUI(BasicComboBoxUI.java:230)
at javax.swing.JComponent.setUI(JComponent.java:650)
at javax.swing.JComboBox.setUI(JComboBox.java:238)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.table.InformationTableCellEditor.createPresetTypeComboBox(InformationTableCellEditor.java:68)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.table.InformationTableCellEditor.<init>(InformationTableCellEditor.java:57)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.getInformationTable(MultipleDialerPanel.java:309)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.getInformationScrollPane(MultipleDialerPanel.java:333)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.getDataPanel(MultipleDialerPanel.java:208)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.AbstractDialerPanel.getMainSplitPane(AbstractDialerPanel.java:145)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.AbstractDialerPanel.<init>(AbstractDialerPanel.java:81)
at mil.navy.spawar.rcp.gui.dialerboard.dialer.MultipleDialerPanel.<init>(MultipleDialerPanel.java:59)
at mil.navy.spawar.rcp.gui.dialerboard.DialerboardPanel.getMultipleDialerPanel(DialerboardPanel.java:130)
at mil.navy.spawar.rcp.gui.dialerboard.DialerboardPanel$1.run(DialerboardPanel.java:86)
at java.lang.Thread.run(Thread.java:595)
REPRODUCIBILITY :
This bug can be reproduced always.
- backported by
-
JDK-8015724 Null Arrow Button Throws Exception in BasicComboBoxUI
- Resolved
-
JDK-8018841 Null Arrow Button Throws Exception in BasicComboBoxUI
- Closed