2016-10-05 15 views
0

私はこのシステムにテーブルがあり、最後の列にボタンを配置する必要があります。私は研究してきましたが、私が見たコードはすべて本当に混乱しています。 1つのthoですが、まだ私は理解していない部分があります。ここで私がInvoiceArrayhttp://www.javaquery.com/2013/05/how-to-implement-jbutton-in-jtable.htmljtuttonにjbuttonを追加するシンプルな方法

String[] InvoiceArray = new String[20]; 
//Declare above variable globally. Used by two-three methods. Change variable name as per your need. 

/* 
* import the ButtonColumn class if you are not working in IDE 
* I used formWindowOpened event to load content in Jtable but you can use other event. 
* All you need is put the code with in that event. 
*/ 
private void formWindowOpened(java.awt.event.WindowEvent evt) { 
     Object[][] rowData = new Object[4][2]; // 4: is number of row ; 2: is number of column 
     Object columnNames[] = {"Invoice No", "View Report"}; // Name of columns 
     for (int i = 0; i < 4; i++) { 
      InvoiceArray[i] = i + "-2345"; 
      rowData[i][0] = i + "-2345"; 
      rowData[i][1] = "View Order " + i; // Can change the text of button. 
     } 
     DefaultTableModel tm = new DefaultTableModel(rowData, columnNames); 
     jTable1.setModel(tm); 
     ButtonColumn buttonColumn = new ButtonColumn(jTable1, showOrder, 1); // 1: is column number. column count starts with 0,1,2... 
} 

それを得たサイトですか?最後の行からshowOrderを作成する必要がありますか?また、リスナーを作る方法について彼が投稿したコードは理解していませんでした。ここにあります:

Action showOrder = new AbstractAction() { 
     public void actionPerformed(ActionEvent e) { 
     //JTable table = (JTable) e.getSource(); // If you have multiple component following the ActionEvent 
      int modelRow = Integer.valueOf(e.getActionCommand()); 
      if (InvoiceArray[modelRow] != null) { 
       /* We are placing invoice no in array 
       * And track the button click index 
       * And fetch index in invoice no 
       */ 
       System.out.println("Your Invoice No:" + InvoiceArray[modelRow]); 
      } else { 
       JOptionPane.showMessageDialog(rootPane, "No records found!"); 
      } 
     } 
}; 

私は既にいくつかの説明があることを知っています。私はそれらのいくつかを理解するが、すべてではない。 jtuttonにjbuttonを追加するだけでなく、jbuttonのリスナーを追加する単純な方法です。ありがとうございます。

答えて

2

jtuttonにjbuttonを追加する単純な方法ですが、jbuttonのリスナーも追加するだけです。

簡単な方法はありません。レンダラーとエディターがJTableでどのように動作するかを理解する必要があります。基本については、Concepts: Renderers and EditorsのSwingチュートリアルのセクションを読んでください。

次に、あなたのために努力してTable Button Columnをチェックアウトすることができます。ボタンをクリックしたときに呼び出されるのはActionです。

InvoiceArrayとは何ですか?

これは、JTableにデータをロードするために使用されます。これはJTableの基本的な使い方であり、テーブルの列にボタンを追加することとはまったく関係ありません。

データが読み込まれたら、invoiceArrayを忘れてください。書き込むアクションは、TableModelまたはJTableを介してデータにアクセスする必要があります。

+0

あなたは私にそれを行う方法についてちょうど非常に非常に短いコードを与えることができますか?私はすでにTable Button Columnをチェックしていますが、本当に混乱していて、ニーモニックをどこに追加したのかわかりませんでした:/ – luh

+0

@luh、簡単なコードが与えられています。 JTableを作成し、それにデータを追加します。これは標準のJTable処理です。このポスティングでは、データ付きのJTableを作成し、テーブルをフレームに追加する方法を理解していることを前提としています。これを行う方法がわからない場合は、作業例のチュートリアルを読んでください。次に、クリックされた行を削除するアクションを追加する方法を示す7行のコードがあります。 「ニーモニックをどこに追加したのか分からなかった」 - 何?あなたは "setMnemonic(...)"ステートメントを見ましたか?私はあなたの混乱を理解していません。 – camickr

+0

ああ、なぜニーモニックを付け加えたの?なぜニーモニックは単なる選択肢であると述べたのか。彼のコードから何かを変えるのですか?はい、私はそれでデータをjtableを作成する方法を知っている、私は本当にリスナーでjbuttonsを追加する方法を知りません。サンプルコードから、 'InvoiceArray'がそれほど重要でない場合、私はそれを取り除くことができますか? 'showOrder'は何のためですか? – luh

関連する問題