0

netbeans で setValueAt() を使用して jtable 列の値を設定しようとしていますが、機能していません。以下は、「コードのカスタマイズ」オプションを使用して設定したものです。null を示す列はブール型です。つまり、チェックを付けたり外したりできます。データベースから値を読み取り、それに応じて列の値を設定したいと考えています。

pref_table = new javax.swing.JTable();

pref_table.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
    {"MONDAY", null, null, null, null},
    {"TUESDAY", null, null, null, null},
    {"WEDNESDAY", null, null, null, null},
    {"THURSDAY", null, null, null, null},
    {"FRIDAY", null, null, null, null},
    {"SATURDAY", null, null, null, null}
},
new String [] {
    "DAY", "9 A.M-11 A.M", "11 A.M-1 P.M", "1 P.M-3 P.M", "3 P.M-5 P.M"
}
) {
    Class[] types = new Class [] {
    java.lang.String.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.Boolean.class
};

public Class getColumnClass(int columnIndex) {
    return types [columnIndex];
}
});

jtable(pref_table) を含むフレームが初期化されると、次の関数を呼び出して列の値が true または false に設定されますが、機能していないようです。

public void set_tab_val(boolean x,int r,int c)
{
  pref_table.setValueAt(true,r,c);
}
4

1 に答える 1

0

フレームにボタンを追加し、あなたが書いたメソッドを呼び出しましたが、うまくいきました。

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class TableSetEx 
{

    static JTable pref_table;

    public static void main(String[] args) {
        pref_table = new javax.swing.JTable();

        pref_table.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {"MONDAY", null, null, null, null},
            {"TUESDAY", null, null, null, null},
            {"WEDNESDAY", null, null, null, null},
            {"THURSDAY", null, null, null, null},
            {"FRIDAY", null, null, null, null},
            {"SATURDAY", null, null, null, null}
        },
        new String [] {
            "DAY", "9 A.M-11 A.M", "11 A.M-1 P.M", "1 P.M-3 P.M", "3 P.M-5 P.M"
        }
        ) {
            Class[] types = new Class [] {
            java.lang.String.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.Boolean.class
        };

        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
        });

        JButton button = new JButton("Click");
        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {
                // Some hardceded cell.
                set_tab_val(true,2,3);
            }
        });

        JFrame frame = new JFrame();
        frame.setLayout(new BorderLayout());
        frame.add(new JScrollPane(pref_table), BorderLayout.NORTH);
        frame.add(button, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }

    public static void set_tab_val(boolean x,int r,int c)
    {
      pref_table.setValueAt(true,r,c);
    }
}
于 2013-03-11T06:53:11.100 に答える