jTable
最初の列はブール値(チェックボックス用)として設定され、2番目の列は文字列値を持ちます。使用しているNetbeans
ため、最初の列のすべての行にチェックボックスが追加されました。2列目に値がある行にのみ追加しようとしました。私はそれを試すためのコードを使用しました、
private class CustomCellRenderer extends DefaultTableCellRenderer {
/* (non-Javadoc)
* @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
@Override
public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected, boolean hasFocus, int row, int column) {
Component rendererComp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,row, column);
for(int i=row;i<jTable1.getRowCount();i++){
if(jTable1.getValueAt(i, 1)==null){
jTable1.setValueAt(true, i, 0);
//checkbox.setOpaque(false);
}
}
return this ;
}
}
上記のforループの他のすべてのチェックボックスに値「true」を設定しようとすると、うまく機能します。残りの行を非表示にするにはどうすればよいですか。
編集:
これに自分のコードを追加しています
package e2;
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class JTable_CheckBox extends javax.swing.JFrame {
/** Creates new form JTable_CheckBox */
JCheckBox checkbox=new JCheckBox();
public JTable_CheckBox() {
initComponents();
jTable1.setValueAt("John",0,1);
jTable1.setValueAt("James",1,1);
jTable1.setValueAt("Janet",2,1);
jTable1.setValueAt("Tom",3,1);
jTable1.getColumnModel().getColumn(0).setCellRenderer(new CheckboxCellRenderer());
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JTable_CheckBox().setVisible(true);
}
});
}
public class CheckboxCellRenderer extends JCheckBox implements TableCellRenderer {
public CheckboxCellRenderer() {
setOpaque(false);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
//here i am trying to set check box invisible,but here i am setting as selected
for(int i=row;i<table.getRowCount();i++){
if(table.getValueAt(i, 1)==null){
table.setValueAt(true, i, 0);
//checkbox.setOpaque(false);
}
}
return this;
}
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}