0
renbor = tabla_proveedor.getSelectedRow();
DefaultTableModel modelo = (DefaultTableModel) tabla_proveedor.getModel();
modelo.removeRow(renbor);

そのコード行は私にエラーを与えます、それは私に与えます...

スレッド「AWT-EventQueue-0」での例外 java.lang.ClassCastException: javax.swing.JTable$1 は javax.swing.table.DefaultTableModel にキャストできません

どうすれば修正できますか?テーブルから行を削除する必要があります。

ここで、tabla_proveedor をインスタンス化します

tabla_proveedor=new JTable(datos_proveedor,columna_proveedor)

    { 
        public boolean isCellEditable(int datos_proveedor, int columna_proveedor){

        return false;
        }
        public Component prepareRenderer(TableCellRenderer r, int datos_proveedor, int columna_proveedor)
        {
            Component c= super.prepareRenderer(r,datos_proveedor,columna_proveedor);

            return c;
        }
        };
4

2 に答える 2

9

javax.swing.JTable$1 どうすればいいですか?

データと列の名前を配列として指定すると、JTable は TableModel の匿名内部クラスを作成します。「$1」は、これが事実であることを示しています。

JTable を作成する簡単な方法は、Vector を受け取るコンストラクターを使用することです。配列を使用する必要がある場合は、DefaultTableModel を手動で作成する必要があります (Sanjay の提案に従って)。

DefaultTableModel model = new DefaultTableModel(data, columnNames)
JTable table = new JTable( model );

しかし、私は getColumnModel().getColumn(0).setPreferredWidth(200); を使用します。

これは、使用されている TableModel とは関係がないため、このコードは DefaultTableModel でも機能します。

于 2013-05-17T03:40:27.977 に答える
3

テーブルを作成するときは、テーブル モデルを手動で設定する必要があります。

table.setModel(new DefaultTableModel());

これは通常、テーブルをフォームに追加した後、コンストラクターまたは GUI-init メソッドで行います。

このようにして、クラスが何であるかがわかります。必要に応じてカスタマイズできます。

于 2013-05-17T02:19:45.647 に答える