テーブルにコンボボックスを設定し、そのコンボボックスの項目をプログラムで表示させたいのですが、 java.awt.IllegalComponentStateExceptionのエラーが発生してしまいます。 エラーを発生させずに項目を表示させる方法などありましたらご教授ください。 以下、サンプルソース(あくまでサンプルです) --------------------------- import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn; class test { public static void main(String args[]){ new test(); } private test() { //フレーム設定 JFrame frame = new JFrame("test"); frame.setBounds(100, 100, 500, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //テーブル設定 JTable table = new JTable(5,6); JScrollPane sp = new JScrollPane(table); sp.setPreferredSize(new Dimension(400, 200)); //コンボボックス設定 String[] combodata = {"aaa", "bbb", "ccc", "ddd"}; JComboBox combo = new JComboBox(combodata); combo.setEditable(true); //テーブルエディターの1列目にコンボボックスを設定 TableColumn col = null; col = table.getColumnModel().getColumn(0); col.setCellEditor(new DefaultCellEditor(combo)); /** 問題箇所 **/ combo.showPopup(); /** ここまで **/ //パネルとともに描画 JPanel p = new JPanel(); p.add(sp); frame.getContentPane().add(p, BorderLayout.CENTER); //フレーム可視化 frame.setVisible(true); } } --------------------------- 詳細なエラー内容 --------------------------- Exception in thread "main" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:2044) at java.awt.Component.getLocationOnScreen(Component.java:2018) at javax.swing.JPopupMenu.show(JPopupMenu.java:942) at javax.swing.plaf.basic.BasicComboPopup.show(BasicComboPopup.java:208) at javax.swing.plaf.basic.BasicComboBoxUI.setPopupVisible(BasicComboBoxUI.java:878) at javax.swing.JComboBox.setPopupVisible(JComboBox.java:818) at javax.swing.JComboBox.showPopup(JComboBox.java:803) at test.test.(test.java:51) at test.test.main(test.java:26) Java Result: 1 --------------------------- 以上です。
↧