-
Bug
-
Resolution: Duplicate
-
P4
-
8u20
-
x86
-
windows_8
FULL PRODUCT VERSION :
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
A DESCRIPTION OF THE PROBLEM :
A JTable uses an editable JComboBox as editor. When typing text in the combo box and stopping the editor by clicking in another editable cell of the JTable, the text is not committed.
May beJDK-8032878 is a hint?
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the code appended as executable test case.
Click into the cell "Key 2", select the text and type "Foo" in there.
Click into the cell "Value 2".
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
"Foo" should be the value of the cell in (0, 1).
ACTUAL -
The value of cell (0, 1) is "Key 2".
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class EditableComboBoxInJTable
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setLayout(new FlowLayout());
frame.add(_createTable());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static JTable _createTable()
{
JTable table;
JComboBox<?> comboBox;
DefaultCellEditor comboEditor;
JTextField textField;
DefaultCellEditor textEditor;
table = new JTable(new String[][]{
{"Key 1", "Value 1"}, {"Key 2", "Value 2"},
{"Key 3", "Value 3"}, {"Key 4", "Value 4"}},
new String[]{"Keys", "Values"});
comboBox = new JComboBox<String>(new String[]{"Key 1", "Key 2", "Key 3", "Key 4"});
comboBox.setEditable(true);
comboEditor = new DefaultCellEditor(comboBox);
comboEditor.setClickCountToStart(1);
textField = new JTextField();
textEditor = new DefaultCellEditor(textField);
textEditor.setClickCountToStart(1);
table.getColumnModel().getColumn(0).setCellEditor(comboEditor);
table.getColumnModel().getColumn(1).setCellEditor(textEditor);
return table;
}
}
---------- END SOURCE ----------
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
A DESCRIPTION OF THE PROBLEM :
A JTable uses an editable JComboBox as editor. When typing text in the combo box and stopping the editor by clicking in another editable cell of the JTable, the text is not committed.
May be
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the code appended as executable test case.
Click into the cell "Key 2", select the text and type "Foo" in there.
Click into the cell "Value 2".
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
"Foo" should be the value of the cell in (0, 1).
ACTUAL -
The value of cell (0, 1) is "Key 2".
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class EditableComboBoxInJTable
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setLayout(new FlowLayout());
frame.add(_createTable());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static JTable _createTable()
{
JTable table;
JComboBox<?> comboBox;
DefaultCellEditor comboEditor;
JTextField textField;
DefaultCellEditor textEditor;
table = new JTable(new String[][]{
{"Key 1", "Value 1"}, {"Key 2", "Value 2"},
{"Key 3", "Value 3"}, {"Key 4", "Value 4"}},
new String[]{"Keys", "Values"});
comboBox = new JComboBox<String>(new String[]{"Key 1", "Key 2", "Key 3", "Key 4"});
comboBox.setEditable(true);
comboEditor = new DefaultCellEditor(comboBox);
comboEditor.setClickCountToStart(1);
textField = new JTextField();
textEditor = new DefaultCellEditor(textField);
textEditor.setClickCountToStart(1);
table.getColumnModel().getColumn(0).setCellEditor(comboEditor);
table.getColumnModel().getColumn(1).setCellEditor(textEditor);
return table;
}
}
---------- END SOURCE ----------
- duplicates
-
JDK-8243282 Enter some text and click into another cell,it reverts to the old, unedited text
-
- Closed
-
- relates to
-
JDK-8032878 Editable combos in table do not behave as expected
-
- Resolved
-