11

データをにロードする関数を作成しましたJTable。このテーブルのすべてのセルが編集可能であることを除いて、すべてが正常に機能しています。ところで、私defaultTableModelはテーブルモデルに使用しました。NetbeansIDEでこれを行っています。助けてください。これが私のコードです:

private void updateTable(String searchText){

    if(searchText != null)
        this._sqlCmd = this._sqlCmd + " WHERE "+columnCombo.getSelectedItem()+" LIKE '%"+searchText+"%'";
    jTable1.setSurrendersFocusOnKeystroke(true);
    table = (javax.swing.table.DefaultTableModel) jTable1.getModel();  

    try{
        table.setRowCount(0);
    }catch(Exception e){}

    try {
        ResultSet rs = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).executeQuery(_sqlCmd);
        while (rs.next()){
            Object[] data = new Object[numOfCols];
            for(int i=0; i<data.length; i++){
                data[i] = rs.getObject(i+1);
            }
            table.addRow(data);
        }
        table.fireTableDataChanged();


    } catch (SQLException ex) {
        Logger.getLogger(FindContactGrid.class.getName()).log(Level.SEVERE, null, ex);
    } 
}
4

6 に答える 6

34
 private TableModel model = new DefaultTableModel(data, columnNames)
  {
    public boolean isCellEditable(int row, int column)
    {
      return false;//This causes all cells to be not editable
    }
  };
  private JTable table = new JTable(model);

編集しました。Netbeans IDEデザイナでこれを行う場合は、以下の手順に従ってください。

  • JTableが配置されるフォームを選択します
  • ナビゲーションペインから、JScrollPaneを展開し、JTableを右クリックして、以下に示すように[コードのカスタマイズ]を選択します。

ナビゲーターペイン

  • コードカスタマイザで、2番目のドロップダウンを選択し、カスタムプロパティを選択します。これにより、DefaultTableModelコード定義を編集できます。
  • ここでこれを貼り付けます: {public boolean isCellEditable(int row, int column){return false;}}最後のクロージングブラックの前);

最終的なセットアップは次のようになります。

  • [OK]を押して保存し、ジョブを完了します。

コードカスタマイザー

于 2012-05-03T13:31:20.707 に答える
9

DefaultTableModelを使用する場合は、メソッドisCellEditableをオーバーライドして、GUIを構築するときに実装できます。

table.setModel(new DefaultTableModel() {

    @Override
    public boolean isCellEditable(int row, int column) {
       return false;
    }
});
于 2012-05-03T13:38:39.440 に答える
2

Netbeansを別の方法で使用することも可能です。OPに記載されているように、デフォルトのテーブルモデルを引き続き使用する場合は、必要がない場合は新しいテーブルモデルを作成する必要はありません。

  1. JTableの「プロパティ」を選択します

  2. 「プロパティ」で「TableModel」フィールドを選択すると、別のダイアログボックスが開きます。

  3. そこから、各列の「編集可能」チェックボックスフィールドを変更できます。

これがどのバージョンから開始されるかはわかりませんが、Netbeans7.2を使用しています

于 2014-08-27T16:30:40.173 に答える
2

これを試して

JTable table = new JTable();
table.setEnabled(false);
于 2017-11-16T02:14:31.323 に答える
1

他の人が言ったように、あなたはあなた自身を作成しDefaultTableModel​​、オーバーライドする必要がありますisCellEditable。Netbeansデザイナで使用するには:

  • テーブルを右クリックします
  • プロパティ->コード
  • カスタム作成コードにこれを追加します:(new JTable(new MyModel())クラスMyModelを作成してAbstractTableModelを拡張すると仮定します)
于 2012-05-03T13:52:13.803 に答える
-1
JTextField f = new JTextField();
f.setEditable(false);
for (int i = 0; i < table.getColumnModel().getColumnCount(); i++) {
    table.getColumnModel().getColumn(i).setCellEditor(new DefaultCellEditor(f));
}
于 2019-09-14T16:38:17.097 に答える