gpt4 book ai didi

java - jtable tablecellrenderer 不执行任何操作

转载 作者:行者123 更新时间:2023-12-01 07:28:28 31 4
gpt4 key购买 nike

我试图进行检查,如果单元格 3 的值不为空,则整行将被着色为绿色,但是这不会执行任何操作,但是,如果我不进行检查,则仅检查以确保没有任何内容已选择(以便选择会给出颜色以表明您确实选择了)所有内容都绘制为绿色。

if (!table.isRowSelected(row))
{
component.setBackground(getBackground());


if(table.getModel().getValueAt(row, 3).equals(""))
{
component.setBackground(Color.GREEN);
}
}

我尝试输出该值,一切正常,这里有问题吗?有不同的方法吗?谢谢

最佳答案

I tried to output the value and everything works properly, is there a problem here? A different way of doing this?

我们需要更多代码/信息来正确回答这个问题:

无论如何,我建议您查看Using Custom Renderer How to Use Tables 中的部分踪迹。您还可以查看下面的示例并将其作为起点:

import java.awt.Color;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

public class Demo {

private void initGUI() {

DefaultTableModel model = new DefaultTableModel(new Object[]{"Manufacturer", "Model", "Country", "Price"}, 0);
model.addRow(new Object[]{"Fender", "Stratocaster", "Japan", ""});
model.addRow(new Object[]{"Gibson", "Les Paul", "USA", "$ 1599"});
model.addRow(new Object[]{"Jackson", "Soloist S3", "Japan","$ 1299"});
model.addRow(new Object[]{"Paul Reed Smith","Standard 24", "USA", ""});

JTable table = new JTable(model);

table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(!isSelected){
Color background = table.getModel().getValueAt(row, 3).equals("") ? Color.GREEN : table.getBackground();
setBackground(background);
} else {
setBackground(table.getSelectionBackground());
}
return this;
}
});

JFrame frame = new JFrame("Demo");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Demo().initGUI();
}
});
}
}

图片

enter image description here

关于java - jtable tablecellrenderer 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669114/

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