2016-12-02 68 views
0

我有一個JTable 5列20行。標頭爲Name,ID,Present,Absent,Late如何在JTable中打勾一個複選框?

我想限制用戶無法勾選所有3個框,顯然這是沒有意義的。

這樣做的最簡單方法是什麼,例如,如果勾選了現在,則缺席被選中,現值將變爲錯誤。

這是我的代碼的基本版本。大聲笑請忽略它是多麼糟糕我是相當新的編程。

JPanel classRegPanel = new JPanel(null); //layout 

Object data[][]= new Object[10][5]; 
String columns[]={"Name","ID","Present", "Absent", "Late"}; 

DefaultTableModel model = new DefaultTableModel(data, columns) { 

boolean[] canEdit = new boolean[]{ 
       false, false, true, true,true 
     }; 

     public boolean isCellEditable(int rowIndex, int columnIndex) { 
      return canEdit[columnIndex]; 
     } 

@Override 
public Class<?> getColumnClass(int columnIndex) 
{ 
    return columnClass[columnIndex]; 
}}; 

JTable table=new JTable(model); 

JScrollPane scrollPane=new JScrollPane(table);  

final Class[] columnClass = new Class[] 
{ 
String.class, Integer.class, Boolean.class, Boolean.class,Boolean.class 
}; 


public void Setup() 
{ 
this.setLayout(new FlowLayout()); 
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

this.add(scrollPane); 

this.setTitle("Register"); 
this.setSize(500,380); 
this.setVisible(true); 
this.setResizable(false); 
} 

public static void main(String[] args) 
{ 
    ClassRegister cr = new ClassRegister(); 
    cr.Setup(); 
} 
+4

請告訴我們你的代碼... – ItamarG3

+2

你可以一個ActionListener添加到每個複選框或使用單選按鈕與一組(也可能與複選框工作) – XtremeBaumer

+0

這不是一個簡單的問題,將首先涉及所有建立你的模型,以便它只允許選擇一行數據中保存的三個項目中的一個。然後你需要創建適當的渲染器和編輯器。 –

回答