나는 JTable
이며, 두 개의 다른 열에 JCheckBox
과 JComoboBox
이 있습니다. 해당 행에 해당하는 JCheckBox
을 선택하면 JComboBox
이 비활성화되어야합니다. 친절하게 도와주세요.JCheckBox에서 JCheckBox를 클릭 할 때 JComboBox를 비활성화합니다.
0
A
답변
4
모델을 기반으로 셀 편집을 비활성화하십시오. TableModel에서 isCellEditable()
메서드를 재정의하거나 구현하여 확인란의 "값"을 반환합니다.
다음 예는 JComboBox를 기반으로하지 않지만, 그것은 행의 시작 부분에 체크 박스의 값에 따라 셀의 판을 사용하지 않도록 설정하는 방법을 보여
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
public class TestTable {
public JFrame f;
private JTable table;
public class TestTableModel extends DefaultTableModel {
public TestTableModel() {
super(new String[] { "Editable", "DATA" }, 3);
for (int i = 0; i < 3; i++) {
setValueAt(Boolean.TRUE, i, 0);
setValueAt(Double.valueOf(i), i, 1);
}
}
@Override
public boolean isCellEditable(int row, int column) {
if (column == 1) {
return (Boolean) getValueAt(row, 0);
}
return super.isCellEditable(row, column);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 0) {
return Boolean.class;
} else if (columnIndex == 1) {
return Double.class;
}
return super.getColumnClass(columnIndex);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestTable().initUI();
}
});
}
protected void initUI() {
table = new JTable(new TestTableModel());
f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setLocationRelativeTo(null);
f.add(new JScrollPane(table));
f.setVisible(true);
}
}
[? 당신이 시도 무엇] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) – user1329572