• 締切済み

JTableに、JConboBoxを入れる

JTableのcolumn=0に、部署を入れます。 そしてcolumn=5に、JComboBoxを設定し、そのcolumn=5 のデータは、コンボボックスから選択してもらいます。 ただ、このコンボボックスの内容は、column=0に入れた 部署により変更したのです。 いろいろと参考にして、テーブルの指定のcolumnに コンボボックスを入れることは出来たのですが、 全部同じコンボボックスになってしまいます。 以下のようにしました。TableColumn の為、 みな同じになるのはわかるのですが、修正方法が わかりません。宜しくお願いいたします。 public void stepColumn(JTable table, TableColumn stepColumn) {  JComboBox comboBox = new JComboBox();  comboBox.setEditable(true);  comboBox.addItem("step_AAA");  comboBox.addItem("step_BBB");  stepColumn.setCellEditor(new DefaultCellEditor(comboBox)); }

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • davosuke
  • ベストアンサー率61% (34/55)
回答No.1

解答を遅れてすみません。 サンプルスースです。 TableColumn sportColumn = table.getColumnModel().getColumn(2); JComboBox comboBox = new JComboBox(); comboBox.addItem("Snowboarding"); comboBox.addItem("Rowing"); comboBox.addItem("Chasing toddlers"); comboBox.addItem("Speed reading"); comboBox.addItem("Teaching high school"); comboBox.addItem("None"); sportColumn.setCellEditor(new DefaultCellEditor(comboBox)); このような形で動きますが 本題の場合stepColumnのコール元状態がわかりませんが コール元で TableColumn stepColumn = table.getColumnModel().getColumn(2); 設定して、 stepColumnメソッドを実行すれば、本題が実装可能です。

関連するQ&A

  • プログラムを補って下さい(swing)

    下記のプログラムで実装できない所がありますので補える方は教えてください 1.チェックボックスで削除を選択した、行番号をコンソールに表示したい。 2.コンボボックスで選択されたコンボボックスの文字列と選択されたコンボボックス   のインデックス番号が知りたい 以上です。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.Class; import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellEditor; import javax.swing.table.TableModel; public class JTableSample1 implements ActionListener{ JComboBox comboBox; public static void main(String[] args) { new JTableSample1().init(); } public void init() { String[] title = { "削除", "String", "Integer", "JComboBox" }; String prompt = "選んで下さい"; Object[][] records = { { Boolean.FALSE, "Rachel Green", new Integer(1970), prompt }, { Boolean.FALSE, "Monica Geller", new Integer(1969), prompt }, { Boolean.FALSE, "Phoebe Buffay", new Integer(1967), prompt }, { Boolean.FALSE, "Joey Tribbiani", new Integer(1967), prompt }, { Boolean.FALSE, "Chandler Bing", new Integer(1968), prompt }, { Boolean.FALSE, "Ross Geller", new Integer(1967), prompt } }; TableModel model = new DefaultTableModel(records, title) { public Class<?> getColumnClass(int column) { return getValueAt(0, column).getClass(); } }; JTable table = new JTable(model); comboBox = new JComboBox(); comboBox.addItem("ごはん食べてる"); comboBox.addItem("テレビみてる"); comboBox.addItem("仕事してる"); comboBox.addItem("寝てる"); TableCellEditor editor = new DefaultCellEditor(comboBox); table.getColumnModel().getColumn(3).setCellEditor(editor); JFrame frame = new JFrame("Joey Table"); frame.getContentPane().add(new JScrollPane(table)); frame.setSize(640, 240); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println("選択されたコンボボックス:"+(String)comboBox.getSelectedItem()); System.out.println("選択されたコンボボックスのインデックス番号:"+comboBox.getSelectedIndex()); } }

    • ベストアンサー
    • Java
  • DBカラムをコンボボックスに設定する方法

    VB初心者ですみませんが、どなたか教えてください。 以下のようにADOにてDBのカラムからデータを取得し、コンボボックスに設定をしたいのですが、よくわかりません。 コンボボックスのはじめに空白→DBの項目を設定→最後に”なし”を設定したいのですが、教えてください。 Dim adors As New ADODB.Recordset adors.Open "SELECT A_FIELD FROM TABLE",・・・・ If adors.RecordCount <> 0 Then ComboBOX.AddItem ("") 'コンボボックスのはじめに空白を設定 Set ComboBOX.RowSource = adors ComboBOX.MatchEntry = dblExtendedMatching ComboBOX.ListField = "A_FIELD" ComboBOX.AddItem ("なし") 'コンボボックスの終わりにに’なし’を設定 End If

  • EXCEL VBA コンボボックスでのLISTINDEXの値

    初めて質問させていただきます。 EXCEL VBAでコンボボックスを設定したときのLISTINDEXの値についてですが、 コンボボックスがフォーム内に3つ(ComboBox1,2,3)あり、次のようなコードの入力を行い、 ComboBox1 Sub Userform_Intialize()  With CcomboBox1   AddItem"AAA" '・・・ここの値は0ですね   AddItem"BBB" '・・・ここの値は1ですね  End With End Sub sub ComboBox1_Change()  Me.combobox2.Clear  Select Case Me.ComboBox1.ListIndex   Case 0   Me.ComboBox2.AddItem "2AAA" '・・・ここの値は0ですね    Me.ComboBox2.AddItem "2BBB" '・・・ここの値は1ですね   Case 1   Me.ComboBox2.AddItem "2CCC" '・・・ここの値は何になりますか?   Me.ComboBox2.AddItem "2DDD" '・・・ここの値は何になりますか?  End Select End Sub このcombobox2の4つの項目から、 更にcombobox3の選択項目に分岐するように設定したいのです。 わかりやすいように、ComboBox3もComboBox2のように作成したいのですが、 このように入力した場合、ComboBox2で"2CCC"を選択した場合、 ListIndexの値が2ではないようなのです。 この"2CCC"と"2DDD"のListIndex値はいくつになるのでしょうか? どなたか教えて下さい。

  • JavaでSwingを用いたコンボボックスの使い方

    こんにちは。 JavaでSwingを使いコンボボックスを使っています。 既にインスタンスを生成済みの空のコンボボックスに1次元配列を格納するにはどのようにしたら良いのでしょうか?いろいろ試行錯誤行いましたがうまくいきませんでした。 ★この空のコンボボックスに後から追加するにはどうしたらよいのでしょうか? JComboBox<String> a1,a2,a3; a1 = new JComboBox<String>(); a2 = new JComboBox<String>(); a3 = new JComboBox<String>(); addItemなどを使ってみましたがうまくいきませんでした。 追加するデータは1次元配列でできています。 Javaのバージョンは7です。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • VBAのコンボボックスのカラムについて

    以下のようにしてコンボボックスのカラムにも文字列が入るようにしております。 With ComboBox1 .AddItem "hogehoge" ComboBox1.List(0, 1) = "aiueo" End With これによってコンボボックスをクリックして出てくるリストにはhogehogeとaiueoの両方が 出てきますが、これを選択するとhogehogeだけがコンボボックスに残され、 (0,1)にあった文字列は消えてしまいます。 リストから選択した後もコンボボックス内にカラムの文字を残すにはどのようにすればよろしいでしょうか?(できれば区切りありで) よろしくお願いします。

  • 同じコンボボックスを二つ以上作る方法

    今同じ内容を表示するコンボボックスを二つ作ろうと思っているのですがつくり方がわかりません。 どのようにすれば一つのプログラムで二つのコンボボックスを作れるのでしょうか 例: 表示では はい いいえ プログラム: Private Sub UserForm_Initialize() ComboBox1.AddItem "はい" ComboBox1.AddItem "いいえ" End Sub Private Sub UserForm_Initialize() ComboBox2.AddItem "はい" ComboBox2.AddItem "いいえ" End Sub ↑のような作り方ではなく簡略化して Private Sub UserForm_Initialize() ComboBox●.AddItem "はい" ComboBox●.AddItem "いいえ" End Sub ●部を変更できれば一つのプログラムでコンボボックスを2つ操作できると思うのですがどのようにすればよろしいでしょうか?

  • Java(指定した配列に値が格納されない)

    指定した配列に対して、値(画像)が挿入されずに困っています。 プログラムの概要を説明します。 パネル上に2次元配列[10][10]のボタンと3つのコンボボックスを造りました。 そしてコンボボックスは、行のインデックスを指定するもの、列のインデックスを指定するもの、 指定した場所に対して値(画像)を設定するもの、の3つでこれらが左から並んでいます。 現在の状況では、行と列に対してどのインデックスを指定しても、必ず[2][2]の値(画像)が変わってしまいます。 まだJavaは経験が浅いので、理由がわからず困っています。 よろしくお願いします。 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class GUISwing18 extends JFrame implements ActionListener{ JButton[][] button = new JButton[10][10]; //ボタンに挿入する画像 final ImageIcon black = new ImageIcon("./image/black.gif"); final ImageIcon white = new ImageIcon("./image/white.gif"); final ImageIcon empty = new ImageIcon("./image/empty.gif"); public static void main(String[] args) { new GUISwing18(); } GUISwing18(){ getContentPane(); JPanel mainpanel = new JPanel(); mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS)); JPanel subpanel = new JPanel(); subpanel.setLayout(new GridLayout(10,10)); //ボタンを作る for(int i = 0 ; i < 100 ; i++){ button[i/10][i%10] = new JButton(black); subpanel.add(button[i/10][i%10]); } mainpanel.add(subpanel); //コンボボックスを設定 JPanel cb = new JPanel(new GridLayout(1,0)); JComboBox row = new JComboBox(); JComboBox side = new JComboBox(); JComboBox value = new JComboBox(); row.addItem("0"); side.addItem("0"); value.addItem("empty"); row.addItem("1"); side.addItem("1"); value.addItem("black"); row.addItem("2"); side.addItem("2"); value.addItem("white"); row.addItem("3"); side.addItem("3"); row.addItem("4"); side.addItem("4"); row.addItem("5"); side.addItem("5"); row.addItem("6"); side.addItem("6"); row.addItem("7"); side.addItem("7"); row.addItem("8"); side.addItem("8"); row.addItem("9"); side.addItem("9"); cb.add(side); cb.add(row); cb.add(value); row.addActionListener(this); side.addActionListener(this); value.addActionListener(this); mainpanel.add(cb); getContentPane().add(mainpanel); setSize(350,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent e) { JComboBox row = (JComboBox)e.getSource(); JComboBox side = (JComboBox)e.getSource(); JComboBox value = (JComboBox)e.getSource(); int x = row.getSelectedIndex(); int y = side.getSelectedIndex(); int z = value.getSelectedIndex(); switch(z){ case 0: button[x][y].setIcon(empty);break; case 1: button[x][y].setIcon(black);break; case 2: button[x][y].setIcon(white); break; } } }

    • ベストアンサー
    • Java
  • JScrollPane上のJTableの再描画

    JPanel上で,以下の初期化関数を作って,データが更新されたときに,この初期化関数を再度呼び出して,テーブルを作り直しています. 描画直後は,正しく表示されるのですが, スクロールバーに触ったり,セルをクリックしたりすると, 初めに作成したテーブルの表示に戻ってしまいます. 何が原因で,どのように対処すれば良いのでしょうか? ご回答いただけますよう,よろしくお願いいたします. public void init_table() { tablemodel1 = new DefaultTableModel(column_names1, text.keyword_num); table1 = new JTable(tablemodel1); scrollt1 = new JScrollPane(table1); add(scrollt1);     以下略 }

    • ベストアンサー
    • Java
  • コンボボックスのClickイベント

    Combo1.AddItem "AAA" Combo1.AddItem "BBB" Combo1.AddItem "CCC" のようなコンボボックスがあり、プログラムの途中で Combo1.Text = "AAA" または Combo1.ListIndex = 0 としたときに、どちらの方法でもClickイベントが発生します。 このClickイベントを発生させないようにしたいのですが 何かよい方法はありますか? あれば教えてください。よろしくお願いします。

  • Excel VBAでコンボボックスで選択

    コンボボックスで選択したいと思っていますがうまくいきません。 教えてください。 Private Sub userform_initialize()  With ComboBox2   .Font.Size = 12   .AddItem "A"   .AddItem "B"   .AddItem "C"  End With If ComboBox2 = "A" Then  With ComboBox3   .Font.Size = 12  .AddItem "a-1"  .AddItem "a-2"  End With ElseIf ComboBox2 = "B" Then With ComboBox3   .Font.Size = 12  .AddItem "b-1" .AddItem "b-2" End With Else: ComboBox2 = "C" With ComboBox3 .Font.Size = 12 .AddItem "c-1" .AddItem "c-2" End With End If End Sub コンボボックス2で"A"を選んだら、コンボボックス3には"a-1とa-2"の選択したい のですが、"c-1,c-2"しかでません。よろしくお願いします。