gpt4 book ai didi

java - 添加新行后未调用 getTableCellRendererComponent

转载 作者:行者123 更新时间:2023-12-01 10:09:04 45 4
gpt4 key购买 nike

我正在使用 Java swing 开发一个应用程序,我的问题是:如果我添加一个新行,则不会调用 getTableCellRendererComponent ,我的代码:

表的创建:

   public Tablecase() {

SystemeBaseConnaissance = new LESSymptomesEnsembleEt();
SystemeBaseConnaissance.lesSymptomesEnsembleEt.add("x");
initComponents();
jTable1.setTableHeader(null);
jTable1.getColumn("Title 1").setCellRenderer(new brmcellrender());

Model model = new Model();

jTable1.setModel( model);
model.addRow(new Object[]{"ss"});
System.out.println(SystemeBaseConnaissance.lesSymptomesEnsembleEt.size());
}

我的默认表模型:

 class Model extends DefaultTableModel{

public Model(){

super();
this.addRow(new Object[]{"sx"} );
repaint();

}

@Override
public void addRow(Object[] rowData) {
super.addRow(rowData); //To change body of generated methods, choose Tools | Templates.
}


}

我的默认单元格编辑器:

    public class brmcelleditor extends DefaultCellEditor{

public brmcelleditor(JTextField textField) {
super(textField);
}
}


public class brmcellrender extends DefaultTableCellRenderer{

public brmcellrender() {
super();
System.out.println("mefgoudabrahim20.Tablecase.brmcellrender.<init>()");
/**/
}

/*affichge */

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
System.out.println("mefgoudabrahim20.Tablecase.brmcellrender.<init>qsdqsdqsd()");
CaseOfTable cas = new CaseOfTable() ;
return ( cas) ;
}



}

最佳答案

if i'm adding a new row , the getTableCellRendererComponent not called

问题不是因为您添加了新行。

jTable1.getColumn("Title 1").setCellRenderer(new brmcellrender());
Model model = new Model();
jTable1.setModel( model);

问题在于您在设置渲染器之后设置了模型。当您设置表的模型时,TableColumnModel 和所有 TableColum 都会重新创建,这意味着您将丢失添加到 TableColumn 的自定义渲染器。

代码应该是:

Model model = new Model();
jTable1.setModel( model);
jTable1.getColumn("Title 1").setCellRenderer(new brmcellrender());

此外,您不会在每次添加行时都创建一个新模型。添加行的目的是将其添加到现有模型中。

最后,类名应该以大写字符开头。修复您的渲染器名称。

关于java - 添加新行后未调用 getTableCellRendererComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36264786/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com