• 締切済み

JTableにデータとJCheckBoxを追加

okure_donchanの回答

回答No.1

JButtonでクリックされた際に発生したEventを下に JTableがDefaultTableModel(AbstractTableModel)をラップして生成されていればDefaultTableModelのinsertRow(int row, Vector(Object[]) vec)でいけるはずです。 今手元にSwing作成する環境がないのでサンプルはかけませんがこんな感じだとおもいます。 ヒント程度にどうぞ。 MyTableModel mytable = new MyTableModel(); //MyTableModelはDefaultTableModelを継承したクラスです。 //すいませんMyTableModelの実装は省略します。 JTable table = new JTable(mytable); これでMyTableModelはinsertRow(int row, Vector vec)を継承してますので これをもとにbuttonでEventを受けたら。 Vector vec = new Vector(); JCheckBox box = new JCheckBox(); //JTextFieldから文字列取得 String text = tgoods.getText(); String size = tsize.getText(); String count = tcount.getText(); でこいつらをVectorにセット vec.add(0,box); vec.add(1,text); vec.add(2,size); vec.add(3,count); それでMyTableModelにセットする。 int rowcount = mytable.getRowCount() + 1; mytable.insertRow(rowcount, vec); あとはMyTableModelの実装が正しければ再表示すると表示されるはずです。

参考URL:
http://www2.gol.com/users/tame/

関連するQ&A

  • JTableに貼り付けたJButton名の取得がうまくできません

    JTableには、通常のセルの部分とボタンの部分があり、ボタンが選択された際にボタン名を取得したいのですが、セルの値を取得してしまいます。 ボタン名を取得するにはどうしたらよいのでしょうか。 DBからレコードを取得し、それを配列にいれています。 1~3個目は、そのままデータ用の配列に入れ、4~10のフィールドをコマンドボタンの名前としJTableに貼り付けています。 data[0][0] = 1 data[0][1] = 2 data[0][2] = 3 data[0][3] = New JButton(field1) data[0][4] = New JButton(field2) ・ ・ ・ 選択されたセルの値を取得すると「jswing....」となってしまいます。 どなたかご存知でしたら、教えて下さい。

  • JavaでJTableの行の追加方法について

    今、Javaの勉強をEclopse3.2で勉強している者ですが、 JTableにてEnterを押したら次の行が追加されるという、 プログラムを作りたいのですが、どうしたら良いでしょうか? 自分はaddRow()を使ってみたのですが、うまく動きませんでした。 何が動かない原因なのかわかりません。 わかる人よろしくお願いします。 他のやり方も教えてください。 private JTable getJTable2() { int po =1; if (jTable == null) { model = new DefaultTableModel(po,2); jTable = new JTable(model); jTable.addKeyListener(new java.awt.event.KeyAdapter() { private int po; public void keyPressed(java.awt.event.KeyEvent e) { System.out.println("keyPressed()"); // TODO Auto-generated Event stub keyPressed() public addRow() String[] data = { "A5", "B5" }; jTable.addRow(data); System.out.println("po="+this.po); po += 1; System.out.println("po="+po); jTable.setValueAt("aikai",po,1); return; } });

    • ベストアンサー
    • Java
  • エクセル、クリックしてデータ追加した情報の削除

    エクセルで資料を作成しました 画面右下の「レイアウト」画面を使っているのですが、「クリックしてデータを追加」 と書かれているページをクリックして、書き込んだ後でそのページが必要ないことに気付きました。 表示レイアウトはそのままで、「クリックしてデータを追加」してしまったページをもとのなかった状態にもどしたいのですが、どうすればいいかご存知の方いらっしゃいますか?

  • SwingのJTableについて

    swingなのですが下記のプログラムで実現できない点があります。 1.isCellEditableメソッドを使ってセルを編集可能にしたのですが 編集した文字が消えてしまいます。 2.また、ボタンを配置してボタンを押下時に編集したセルの   行のデータをコンソールに表示したいのですがどうすればいいかわかりません。 3.画面レイアウトがsetLocation(x, y)した位置に表示されません。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class JTableSample4 implements ActionListener { static Vector<String>[] data = new Vector[3]; static JFrame frame; public static void main(String[] args) { frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); JPanel panel1 = new JPanel(); // セルのデータ作成 for (int i = 0; i < 3; i++) { data[i] = new Vector<String>(); } // data[0]に名前、data[1]に住所、data[2]に電話番号 data[0].addElement("鈴木一郎"); data[1].addElement("東京都"); data[2].addElement("xxxxxxxxxx"); data[0].addElement("佐藤花子"); data[1].addElement("千葉県"); data[2].addElement("yyyyyyyyyy"); data[0].addElement("田中浩二"); data[1].addElement("埼玉県"); data[2].addElement("zzzzzzzzzz"); data[0].addElement("小川伸介"); data[1].addElement("新潟県"); data[2].addElement("aaaaaaa"); data[0].addElement("佐藤和也"); data[1].addElement("群馬県"); data[2].addElement("bbbbbbb"); data[0].addElement("渡辺悟"); data[1].addElement("愛知県"); data[2].addElement("ccccccc"); data[0].addElement("橋本智也"); data[1].addElement("愛媛県"); data[2].addElement("ddddddd"); data[0].addElement("永井祐二"); data[1].addElement("栃木県"); data[2].addElement("eeeeeee"); data[0].addElement("細貝昭二"); data[1].addElement("福岡県"); data[2].addElement("fffffff"); data[0].addElement("堀野友光"); data[1].addElement("長野県"); data[2].addElement("gggggggg"); // テーブル作成 TableModel tableModel = new AbstractTableModel() { // 行数 public int getRowCount() { return 10; } // 列数 public int getColumnCount() { return 3; } // row行column列の値をセット public Object getValueAt(int row, int column) { return data[column].elementAt(row); } // タイトル部の値をセット public String getColumnName(int column) { switch (column) { case 0: return "名前"; case 1: return "住所"; case 2: return "電話番号"; } return ""; } /******************セルの編集 可/不可を操作するメソッド**********************/ public boolean isCellEditable(int rowIndex, int columnIndex) { /*0が1カラム目 1が2カラム目なのでこの場合電話番号だけ編集可*/ if (columnIndex == 0 || columnIndex ==1) { /*falseは編集不可*/ return false; } else /*trueは編集可*/ return true; } }; JLabel label = new JLabel("電話番号だけがセルを編集することができます"); label.setLocation(10, 10); label.setSize(300, 20); JButton button = new JButton("Click Me!"); button.setLocation(10, 400); button.setSize(20, 20); //button.addActionListener(); JTable table = new JTable(tableModel); JScrollPane scrollPane = new JScrollPane(table); scrollPane.setLocation(10, 40); scrollPane.setSize(750, 180); panel1.add(button); panel1.add(label); panel1.add(scrollPane); panel1.setBounds(10, 10, 800, 230); frame.add(panel1); frame.setSize(800, 600); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { System.out.println("test"); } }

    • ベストアンサー
    • Java
  • SwingでJtableのヘッダ行が表示されません

    SwingでJtableのヘッダ行が表示されません 解決方法とどうして表示されなかったのか理由もできればお願いします。 import java.util.Vector; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class Table_Calendar extends JFrame{ Vector<String>[] data = new Vector[3]; public static void main(String args[]){ new Table_Calendar(); } public Table_Calendar(){ super(); // ウィンドウサイズ this.setSize(800, 600); // レイアウト this.setLayout(null); // ウィンドウクローズ時の処理 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // セルのデータ作成 for (int i = 0; i < 3; i++) { data[i] = new Vector<String>(); } // data[0]に名前、data[1]に住所、data[2]に電話番号 data[0].addElement("鈴木一郎"); data[1].addElement("東京都"); data[2].addElement("xxxxxxxxxx"); // テーブル作成 TableModel tableModel = new AbstractTableModel() { // 行数 public int getRowCount() { return 1; } // 列数 public int getColumnCount() { return 3; } // row行column列の値をセット public Object getValueAt(int row, int column) { return data[column].elementAt(row); } // タイトル部の値をセット public String getColumnName(int column) { switch (column) { case 0: return "名前"; case 1: return "住所"; case 2: return "電話番号"; } return ""; } }; JTable table = new JTable(tableModel); table.setLocation(10, 20); table.setSize(600,500); JPanel panel2 = new JPanel(); panel2.setLayout(null); panel2.add(table); /*setBounds(int x,int y,int width,int height)*/ panel2.setBounds(10, 10, 700,700); this.add(panel2); this.setVisible(true); } }

    • ベストアンサー
    • Java
  • JFileChooserで選択したファイルをテーブルに追加したい

    現在未完成ですが、このような感じでボタンを押してJFileChooserを開いて選択したものをテーブルに格納するものを作ろうとしていますが、テーブルモデルに関する知識が浅く困っています。テーブルに格納するのは、String columnName[] = { "名前","サイズ","更新日時","拡張子" }; でそれぞれの項目に該当する内容をテーブルの各セルに出力したいです。 AbstractTableModelを使ってこのコードにさらに拡張しちゃんとしたものにしたいのですが、どこにどのようなコードを追加していったらよいでしょうか? また直す点がありましたら、教えていただけると嬉しく思います。お願いいたします。(一部コード略) public class Test extends JFrame {        : private JButton getJButton() {    : jButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { JFileChooser fileChooser = new JFileChooser(".");int state = fileChooser.showOpenDialog(null); File file = fileChooser.getSelectedFile(); if(state != JFileChooser.APPROVE_OPTION || file == null){ return; }}});} return jButton; } private JTable getJTable() {    : return jTable; } private JScrollPane getJScrollPane() {    : return jScrollPane; } public static void main(String[] args) {} public Test() { super(); initialize(); } private void initialize() { this.setSize(300,200); this.setContentPane(getJContentPane()); this.setTitle("テーブル"); } private javax.swing.JPanel getJContentPane() {   : return jContentPane; }

    • ベストアンサー
    • Java
  • 写真の印刷ウィザードのレイアウトを追加したい。

    写真の印刷ウィザードでレイアウトの選択がありますよね。 フルページプリントや定期券サイズのプリントとさまざまなレイアウトを選択できますが、もっと追加できないのでしょうか? CDのジャケットのサイズのレイアウトが欲しいのです。 マイクロソフトのホームページを見たのですがそれらしきものは見つかりませんでした。 もし、追加出来ない場合、印刷ウィザードは他にフリーアプリケーションみたいなものでないのでしょうか? 回答お待ちしております。お願いします。

  • ACCESSのテーブルのデータ追加VBA

    (サーバーのORACLEのデータベースに追加) ACCESSのAテーブルのデータをBテーブルに追加する。追加クエリを使わずVBAで作成したいのですが、どうすればよいのでしょうか。 追加クエリだと件数が多いのか、タイムアウト、ログオーバーのような エラーになってます。 A,Bテーブルは同じレイアウトです。 Bテーブルは空です。 また、サンプルが出ているようなサイトを探しているのでですが どこか良いACCESS専用の質問サイトがありますか。 ACCESS CLUBはなんだか私には使いづらいので他のサイトがあれば宜しくお願いします。

  • access追加クエリーでform入力項目値をセットする方法

    Access2002で、システムを構築中です。 いろいろ調べたのですが、初歩的過ぎるのは、意味が理解できてないのか、まったく判らなかったので、教えてください。 FORMから、年4桁をコンボボックスで選択させ、 Aテーブルの項目に、この年項目を追加したレイアウトで、 Bテーブルにデータを追加しようとしています。 Aよりレコードを読み込み、新しい項目にこの画面入力値をセットして全レコード同じ値として追加し、Bテーブルに書き込む処理を、ACCESSのクエリーでやりたいと考えています。 この画面の値のセットの仕方がわからず苦労しています。 動作イメージは、 フォームAのコンボボックスで値1を選択 コマンドボタンを押すと、クリックイベントでVBAへ。 VBA内では、 1 テーブルAから、テーブルBのデータを上記のように編集し、   追加する追加クエリを起動。 2 テーブルAのデータをクリア 以上です。 よろしくお願いします。

  • エクセルのデータ抽出

    エクセルのデータ加工について質問致します。 P列にデータが入っています。 例えばR2に10を入れた時には、P列から上から10個のデータを取り出して、取り出した10個のデータの上位から5%、25%、40%~に値する相対数値をS列に反映したいと思っています。また、その割合に含まれる個数をT列に出したいのですが、よろしくお願い致します。