JavaのjTableで発生したエラー

このQ&Aのポイント
  • for文を追加すると「jTable3が見つかりません」というエラーが発生した
  • プログラムがfor文を追加する前は問題なく動作していた
  • なぜfor文を追加することでエラーが発生するのか疑問
回答を見る
  • ベストアンサー

JavaのjTableに関する質問です

以下の様にプログラムを書いた所、「jTable3が見つかりません」と出力されました。 for文をつける以前は何も問題なく動いていたいのに、どうしてfor文を付けたことによって、このようなエラーが起きたのでしょうか? private void jButton19MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: for(int i=0;i<10;i++) NewJFrame.jTable3.getColumnModel().getColumn(20).setCellRenderer(new MyTableCellRenderer()); } }

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

jTableはよく知りませんが……。 http://okwave.jp/qa/q8446105.html ここで、  jTable3.getColumnModel().getColumn(20).setCellRenderer(new MyTableCellRenderer()); と書いていたものが、なぜ  NewJFrame.jTable3.getColumnModel().getColumn(20).setCellRenderer(new MyTableCellRenderer()); になっているんでしょうか?

関連するQ&A

  • java NetBeans SwingでGUI

    java NetBeans IDE 7.4のSwingでGUI JFrameにテキスト領域を二つ張り付けます。 ボタンを張り付けダブルクリック。 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextArea1.append("test1"); jTextArea2.append("test2"); } ここまでは、できる。 int x; x = 1; jTextArea(x).append("test1"); x = 2; jTextArea(x).append("test1") このように1 .2 を変数でできないか? お願いします。

    • ベストアンサー
    • Java
  • javaのJTableのupdateについて

    javaのJTableについて質問します。 Q1)下記のコードは元のtabledataをupdateしていますが、updateの内容を元のtabledataに 反映する設定はありますか(元のtabledataの内容は変化します)? =========================================== import javax.swing.*; import java.awt.event.*; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.table.DefaultTableModel; public class SwingTest extends JFrame{ private String[][] tabledata = { {"日本", "3勝", "0敗", "1分"}, {"クロアチア", "3勝", "1敗", "0分"}, {"ブラジル", "1勝", "2敗", "1分"}, {"オーストラリア", "2勝", "2敗", "0分"}}; private String[] tabledata2 = {"イギリス", "2勝", "0敗", "2分"}; private String[] columnNames = {"COUNTRY", "WIN", "LOST", "EVEN"}; public static void main(String[] args){ SwingTest test = new SwingTest("SwingTest"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } SwingTest(String title){ setTitle(title); setBounds( 10, 10, 300, 200); DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0); JTable table = new JTable(tableModel); for(int i = 0 ; i < 4 ; i++){ tableModel.addRow(tabledata[i]); } tableModel.setValueAt("2勝", 1, 1); tableModel.setValueAt("2敗", 1, 2); JScrollPane sp = new JScrollPane(table); sp.setPreferredSize(new Dimension(250, 90)); JPanel p = new JPanel(); p.add(sp); getContentPane().add(p, BorderLayout.CENTER); } }

    • ベストアンサー
    • Java
  • Netbeans6 swingでの画面切替について

    Netbeans6 swingでGUIアプリを作成しようとしています。 swingは初心者です。 簡単な画面切替ができず、理解に困っています。 画面構成 ・画面1 ・画面2 目的:画面1のボタンを押されると画面2を表示したい。 構成 ・MainFlame.java ⇒ フレームと画面1(パネルを定義) ・Panel01.java ⇒ 画面2(パネル) 今後、ログイン⇒メニュー⇒入力画面(複数)といった具合にしたいので、1画面1クラスで行いたいです。 こういった場合どうすれば画面がきりかわるのでしょうか? よろしくお願いします。 ボタンクリック時のイベント部分にはこう書いてますが動きません。 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: remove(jPanel1); Panel01 panel = new Panel01(); add(panel); validate(); }

    • ベストアンサー
    • Java
  • javaで起こったバグ?!

    私が普段プログラムを書いてコンパイルすると、ほぼ確実といってもいいくらいにおかしなことが起きます。 ボタンを配置して、処理を書きます(ここではJTableが現れるという処理にします)、そしてコンパイルします、コンパイルは通ります、ウィンドウが現れます、ボタンを押したら処理が起きてJTableが現れるはずなのですが、ボタンを押すとコマンドプロンプトでわけわからん英語や数字が現れます(出力される)。 自分の書いたプログラムをeclipseでコピペしても、問題はありませんでした。 コマンドプロンプトを一度消して、直ったプログラムもあります。また、その逆に何度やっても直らないものもあります。 ↓私の書いたプログラムです。おかしいところ等がありましたらご指摘下さい。また解答者様のPCでコピペして、試してみて下さい。 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Sukejuru extends JFrame implements ActionListener { JPanel p; public static void main(String args[]) { Sukejuru ske = new Sukejuru(); ske.setBounds(200,200,600,300); //大きさ&ウィンドウの位置 ske.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//クローズ ske.setVisible(true); } Sukejuru() { super("Myスケジュール"); JPanel p = new JPanel(); p.setBackground(Color.green); add(p); JButton b1 = new JButton("一月"); b1.addActionListener(this); b1.setActionCommand("b1"); p.add(b1); JButton b2 = new JButton("二月"); b2.addActionListener(this); b2.setActionCommand("b2"); p.add(b2); JButton b3 = new JButton("三月"); b3.addActionListener(this); b3.setActionCommand("b3"); p.add(b3); } public void actionPerformed(ActionEvent e) { JTable table = new JTable(5,5); JScrollPane sp = new JScrollPane(table); p.add(sp); } }

    • ベストアンサー
    • Java
  • JavaでDBを作りたい

    一応自分で出来る限りコードは書いたのですが、上手くいきません。 実行すると一応テーブルは表示されるのですが、更新や削除をしようとすると「java.sql.SQLException: executeQuery メソッドを更新用に使用することはできません」などというエラーが出てしまいます。 また、検索機能をつけるとすればどのようにすればいいでしょうか? (文字数の関係上import文など一部割愛しています) public class test extends BaseFrame implements MouseListener { static int KETU; private JLabel l_code, l_title, l_price; private JTextField tf_code, tf_title, tf_price; private String s_code, s_title, s_price; private JButton b_add, b_cha, b_del; private JTable tb; private JScrollPane sp; private JPanel pn; // パネル分割 private ResultSet rs = null; public static void main(String[] args) { new test("データの挿入"); } public test(String title) { super(title); Container cp = getContentPane(); // テーブル表示エリアの設定(省略)// tb = new JTable(new DefaultTableModel()); // テーブル初期は空の状態 sqlTable("select * from USERS"); // 起動と同時にテーブルを表示 } public void mouseClicked(MouseEvent evt) { Object src = evt.getSource(); s_code = tf_code.getText(); s_title = tf_title.getText(); s_price = tf_price.getText(); if (src == b_add) { sqlTable("insert into USERS values(" + (KETU + 1) + ",'" + s_title+ "'," + s_price + ")"); sqlTable("select * from USERS"); } else if (src == b_cha) { sqlTable("update USERS set title= '" + s_title + "', price= " + s_price + " WHERE code= " + s_code); sqlTable("select * from USERS"); } else if (src == b_del) { sqlTable("delete from USERS where code= " + s_code); sqlTable("select * from USERS"); } tf_code.setText(""); tf_title.setText(""); tf_price.setText(""); } public void mouseEntered(MouseEvent evt) { Object src = evt.getSource(); if (src == b_add) { tf_code.setBackground(Color.black); } else if (src == b_cha) { } else if (src == b_del) { tf_title.setBackground(Color.black); tf_price.setBackground(Color.black); } } public void mouseExited(MouseEvent evt) { Object src = evt.getSource(); if (src == b_add) { tf_code.setBackground(Color.white); } else if (src == b_cha) { } else if (src == b_del) { tf_title.setBackground(Color.white); tf_price.setBackground(Color.white); } } @Override public void mousePressed(MouseEvent evt) { } public void mouseReleased(MouseEvent evt) { } public void sqlTable(String sql) { // SQLテーブル表示用 System.out.println(sql); try { String drv = "org.apache.derby.jdbc.ClientDriver"; String url = "jdbc:derby://localhost:1527/jad2011"; Class.forName(drv); Connection cn = DriverManager.getConnection(url); Statement st = cn.createStatement(); rs = st.executeQuery(sql); //SQLの実行 ResultSet rs = st.executeQuery(sql); tb.setModel(new MyTableModel(rs)); rs.close(); st.close(); cn.close(); } catch (Exception e) { e.printStackTrace(); } } // テーブルモデルクラス class MyTableModel extends AbstractTableModel { private Vector<Object> colname; private Vector<Object> data; public MyTableModel(ResultSet rs) { try { // 列数の取得 ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); colname = new Vector<Object>(cnum); // 列名の取得 for (int i = 1; i <= cnum; i++) { colname.addElement(rm.getColumnName(i)); } data = new Vector<Object>(); KETU = 0; while (rs.next()) { Vector<Object> rowdata = new Vector<Object>(); for (int i = 1; i <= cnum; i++) { rowdata.addElement(rs.getObject(i)); if (i == 1) { if (KETU < ((Integer) rs.getObject(i))) { KETU = ((Integer) rs.getObject(i)); } } } data.addElement(rowdata); } } catch (Exception e) { e.printStackTrace(); } } public int getRowCount() { return data.size(); } public int getColumnCount() { return colname.size(); } public Object getValueAt(int row, int column) { Vector rowdata = (Vector) data.elementAt(row); return rowdata.elementAt(column); } public String getColumnName(int column) { return (String) colname.elementAt(column); } }

    • ベストアンサー
    • Java
  • JavaのJTableのセル単体の色設定

    今日は JavaのJtableの『マウスで選択したセル』の色を赤色に設定するコードを書きましたが、セル単体でバックグランドの色が変更できまず、行単位で変更されます。 又、変更のタイミングは、他のセルを、マウス選択したときに、以前のセルの行が赤く変更になります。 Q1)セル単体で、バックグランドの変更を行い、その変更タイミングは、クリックと同時に  行う様に改善したく質問いたします。 注)Java暦は、初心者で約2週間ですが。下記にソースを添付いたしますので、宜しくお願いいたします。 //============================== package packageA; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class JTableTest2 extends JFrame{ public static void main(String[] args){ JTableTest2 test = new JTableTest2("T"); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); } JTableTest2(String name){ setBounds( 0, 0, 400, 200); setTitle(name); String d[][] = { {"A","8","7"}, {"B","6","5"}, {"C","7","6"} }; String t[] = {"名","数","英"}; DefaultTableModel tm = new DefaultTableModel(d,t); final JTable tablex = new JTable(tm); /* final JTable tablex = new JTable(tm){ @Override public Component prepareRenderer(TableCellRenderer tcr, int row, int column) { Component c = super.prepareRenderer(tcr, row, column); if (row == 2 && column == 2) { c.setForeground(Color.BLUE); c.setBackground(Color.RED); } else { c.setForeground(getForeground()); c.setBackground(getBackground()); } return c; } }; */ tablex.addMouseListener( new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { int row=tablex.getSelectedRow(); int col=tablex.getSelectedColumn(); // TableCellRenderer tcr = tablex.getCellRenderer(row,col); // Component c = tablex.prepareRenderer(tcr,row,col); Component c = tablex.getComponentAt(row,col); c.setForeground(Color.BLUE); c.setBackground(Color.RED); System.out.println(" "+row+" "+col); } } ); JPanel p1 = new JPanel(); JScrollPane sp1 = new JScrollPane(tablex); sp1.setPreferredSize(new Dimension(250, 80)); p1.add(sp1); getContentPane().add(p1, BorderLayout.NORTH); } }

    • ベストアンサー
    • Java
  • JTableでスクロールバーが表示されない

    JTableで表を作成しました。 表示はされているのですが、 スクロールバーが表示されません。 コードは下記の通りです。 どうか宜しくお願いいたします。 ■Java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class ren32 extends JApplet{ Container c; public void init(){ c = this.getContentPane(); c.setLayout(null); String[] cname = { "name","comment","test1","test2", "(0)","(1)","(2)","(3)","(4)", }; Object[][] cell = { {"","","","","","","","",""}, }; JTable table = new JTable(cell, cname); JScrollPane sp = new JScrollPane(table); sp.setBounds(10,10,750,380); c.add(sp); } } ■html <html> <head> <title>Ren1</title> <body bgcolor=white text=black> <applet code="ren32.class" width="800" height="500"> </applet> </head> </html>

    • ベストアンサー
    • Java
  • JButton配列でのイベント処理

    JAVA初心者です。 ある、画面にボタン50個を作成しました。(JButtonの配列で作成しました。) そこで質問です。下記のコールバックメソッド(?)btnActionPerformedを50個分作成するのは 煩雑なので1つで処理しようと考えております。 for (int cnt=0; cnt<50; cnt++) { ... JButtonのインスタンス生成処理等 ... btn[cnt-1].addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnActionPerformed(evt); } }); } ... ... ... private void btnActionPerformed(java.awt.event.ActionEvent evt) { ... } btnActionPerformedで受け取ったevtパラメータから押されたボタンのプロパティ等 が判別つくのでしょうか?ActionEventクラスのヘルプを参照しましたが、 いまひとつ良くわかりません。 また、このevtパラメータを使う方法以外で、この様な事が実現できる方法が あれば教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのイベント処理についての質問

    今、以下の課題に取り組んでいるのですが、「新しくクリックした座標点で円を描くだけでなく、 以前にクリックした座標点での円も全て表示するように」というところのプログラミング方法がわかりません。 現在のソースは実行してもクリックしたところに円が表示されるようにできたのですが、別の場所をクリックすると以前の円は消えてしまいます。 どなたか詳しい方教えていただけませんでしょうか。 問題文↓ 図のように、マウスクリックした位置に円を描くアプレットを作成せよ。円の数は最大10個までとする。なおマウスクリックした位置は、 public void mouseClicked(MouseEvent e) とすると e.getX(); e.getY(); というメソッドでint型のx,y座標点として得られる。 クリックした座標点を記憶しておくために、点の位置は、xp[i]、yp[i]のように配列を使用し、新しくクリックした座標点で円を描くだけでなく、 以前にクリックした座標点での円も全て表示するように、プログラムを作成すること。 なお、メソッドmouseClicked(MouseEvent e)とメソッドpaint(Graphics g)に共通して座標点を扱うために座標点はグローバル宣言を必要とする。 ソース import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class Marble extends Applet { int xp; int yp; public void init(){ MsListener mouseListener=new MsListener(); setBackground(Color.white); addMouseListener(mouseListener); } class MsListener extends MouseAdapter{ public void mouseClicked(MouseEvent e){ xp=e.getX(); yp=e.getY(); repaint(); } } public void paint(Graphics g){ final int MAX=20,WIDTH=200,HEIGHT=200; g.draw3DRect(0,0,WIDTH-2,HEIGHT-2,false); g.setColor(Color.blue); g.fillOval(xp-5,yp-5,10,10); } } どうかよろしくお願いします。

  • javaでストップウォッチが上手く作れません

    あるサイトを参考にして作ってみたんですが うまく動いてくれません、多分おかしいところだらけですが どこがダメか教えてもらえるとありがたいです package timeP; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; public class timeC extends JFrame implements Runnable { private JPanel contentPane; private JTextField textField; private Thread th = null; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { timeC frame = new timeC(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public timeC() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 85); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.X_AXIS)); JPanel panel_3 = new JPanel(); contentPane.add(panel_3); panel_3.setLayout(new BorderLayout(0, 0)); textField = new JTextField(); panel_3.add(textField, BorderLayout.CENTER); textField.setColumns(10); JPanel panel_2 = new JPanel(); contentPane.add(panel_2); panel_2.setLayout(new BorderLayout(0, 0)); JButton JButtonstart = new JButton(" 開始 "); JButtonstart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th == null ) { th = new Thread ( ); th.start(); } } }); panel_2.add(JButtonstart, BorderLayout.CENTER); JPanel panel_1 = new JPanel(); contentPane.add(panel_1); panel_1.setLayout(new BorderLayout(0, 0)); JButton JButtonstop = new JButton(" 停止 "); JButtonstop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th != null ){ th = null; } } }); panel_1.add(JButtonstop, BorderLayout.CENTER); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(new BorderLayout(0, 0)); JButton btnNewButton_2 = new JButton("New button"); panel.add(btnNewButton_2, BorderLayout.CENTER); } @Override public void run() { //TODO 自動生成されたメソッド・スタブ int i; while ( th != null ){ i = Integer.parseInt( textField.getText() ); try { Thread.sleep(10000); if ( th == null ) break; } catch ( InterruptedException e ){ break; } textField.setText( Integer.toString( i + 1 ) ); } } }

専門家に質問してみよう