gpt4 book ai didi

java - Jtable 单元格渲染器不会更改整数值的背景

转载 作者:行者123 更新时间:2023-11-30 03:01:34 26 4
gpt4 key购买 nike

我创建了 cellrenderer 类来更改我的行背景。如果行的(率%)列值是我尝试更改行的背景。但是当我尝试的时候。渲染器仅更改非整数列的背景。

这是我的渲染器。

public class hucreRenderer extends DefaultTableCellRenderer {

Color orginal=Color.white;
@Override
public Component
getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {

Component cell =
super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);

int value;
try {
//10th column is a 'rate' column
v=Integer.parseInt(table.getModel().getValueAt(
table.convertRowIndexToView(row), 10).toString());

}catch(Exception e){value=1000;}

if(value<100){

cell.setBackground(Color.red);

else{
cell.setBackground(orginal);
}

return cell;
}


}

这是表初始化。

 String col[] = {"ID","AD","GRUP", "ADET", "Kritik","TELEFON", "TEDARİKÇİ", "ALIŞ", "SATIŞ", "ADRES","RATE(%)"};

urunTablo.setModel(new DefaultTableModel(new Object[0][], col) {
Class[] types =
{ Integer.class, String.class,String.class,Integer.class,Integer.class,String.class,String.class,Integer.class,Integer.class,String.class,Integer.class };


DefaultTableModel t =(DefaultTableModel)urunTablo.getModel();
t.getDataVector().removeAllElements();
t.setColumnIdentifiers(col);


for(Urun u:urunler){
int r=new Integer(u.getRate());
Object row[]={
new Integer( u.getKod()),
u.getAd(),
u.getGrup(),
new Integer( u.getAdet()),
new Integer(u.getKritikAdet()),
u.getTelefon(),
u.getTedarikci(),
new Integer( u.getAlis()),
new Integer( u.getSatis()),
u.getAdres(), r};

t.addRow(row);


}

这是结果。 Example

有趣的是。如果我使用 Nimbus 外观和感觉主题,我不会遇到这个问题。 nimbus example

还有一个 nimbus 的代码。我在此对话框的主要方法中使用它

 try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
//and the catchs...

现在已经非常感谢了。祝你有美好的一天。

编辑:默认单元格渲染器不适用于保存 Integer.class 的单元格。这是主要问题。

最佳答案

经过大量的研究和测试:)终于我发现了问题。问题是设置表格默认渲染器样式

我之前使用过这种类型(Ex代码)

myTable.setDefaultRenderer(Object.class,new MyDefaultCellRenderer());

这是将 object.class 转换为 String.class (默认)(因为 DefaultCellRenderer xD)并且渲染器仅适用于字符串单元格

我像这样再次设置渲染器

myTable.setDefaultRenderer(Integer.class,new MyDefaultCellRenderer());
myTable.setDefaultRenderer(String.class,new MyDefaultCellRenderer());

现在这可以适用于整数和字符串单元格

工作和金属! :) enter image description here

所以你会说外观和感觉方面的东西

我认为在 Nimbus LAF setDefaultRenderer(Object.class,new MyDefaultCellRenderer()) 中获取所有类型的对象。其他 LAF 则不然。

非常感谢大家。如果您对此有额外的想法,请在下面发表评论。祝你工作轻松:)

关于java - Jtable 单元格渲染器不会更改整数值的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35814721/

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