2011-01-07 17 views
2

我想名稱和JTable的值保存到JTable中數據的兩個變量保存時savebutton按下

public class NewClass extends JPanel implements TableModelListener { 
private final String[] columnNames = { "Name", "Value","check"}; 
private JTable table; 
private DefaultTableModel tableModel; 
private final JButton buttonSave; 

public NewClass(){ 
tableModel = new DefaultTableModel(columnNames, 0); 

tableModel.addTableModelListener(this); 
table = new JTable(tableModel); 
javax.swing.table.TableColumn var_col; 
var_col = table.getColumnModel().getColumn(2); 
final JCheckBox check = new JCheckBox(); 

var_col.setCellEditor(new DefaultCellEditor(check)); 
var_col.setCellRenderer(new DefaultTableCellRenderer() { 
      @Override 
public Component getTableCellRendererComponent(JTable table, 
Object value, boolean isSelected, boolean hasFocus, int row, int 
column) { 
check.setSelected(((Boolean)value).booleanValue()) ; 
return check; 
} 
}); 

JScrollPane scrollPane = new JScrollPane(table); 

setLayout(new BorderLayout()); 
setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); 
add(BorderLayout.NORTH, new JLabel("Mon panier", JLabel.CENTER)); 
add(BorderLayout.CENTER, scrollPane); 
//--------I want to save these Name and value in two variables ----------- 

Object[] data1 = { 
new String("work"), new String("done"),new Boolean(false)}; 
tableModel.addRow(data1); 

buttonSave = new JButton("Save"); 
buttonSave.setEnabled(false); 
buttonSave.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent ev) { 
    buttonSave.setEnabled(false); 
} 
}); 
+0

你的問題到底是什麼?這真的沒有任何意義 - 對不起。 – javamonkey79 2011-01-07 05:20:34

回答

3

正如How to Use Tables討論,你表的數據應該由諸如AbstractTableModel或混凝土DefaultTableModelTableModel管理在你的例子中使用。在此example中,DataModel延伸AbstractTableModel併合成測試數據的List<Value>;你會聽任何對象監視串口。 example也使用類別Value來封裝可選數值。自定義TableCellEditor更新每個Value,因爲它已更改,所以DataModel始終包含列表中每個元素的選擇狀態。然後,您的保存按鈕可以保存您喜歡的任何格式的列表元素。

相關問題