因此,我试图根据单元格的结果将jtable中的行的颜色更改为红色。请将此代码放在下面,应该可以工作,但注意更改
她是代码,如果有人能对它做一些修改,那就太好了,谢谢你
public class Test1 extends JFrame {
private JPanel contentPane;
private JTable table;
private static JTable getNewRenderedTable(final JTable table) {
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int col) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
int status = (int)table.getModel().getValueAt(row, 4);
if (status<=0) {
setBackground(Color.RED);
setForeground(Color.BLACK);
} else {
setBackground(table.getBackground());
setForeground(table.getForeground());
}
return this;
}
});
return table;
}
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test1 frame = new Test1();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Test1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
try
{ Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
String query="select * from employes";
PreparedStatement pst=con.prepareStatement(query);
ResultSet rs=pst.executeQuery();
ResultSetMetaData rsm=rs.getMetaData();
int c=rsm.getColumnCount();
Vector column=new Vector(3);
column.add(rsm.getColumnName(1));
column.add(rsm.getColumnName(2));
column.add(rsm.getColumnName(3));
column.add("date");
Vector row=new Vector();
Vector data=new Vector();
while(rs.next())
{
row=new Vector();
row.add(rs.getString("id"));
row.add(rs.getString("nom"));
row.add(rs.getString("prenom"));
Timer time=new Timer(rs.getString("date_de_embauche").toString());
int j=(int) time.getResulte();
row.add(j);
data.add(row);
}
table = new JTable(data,column);
}
catch(Exception e)
{
System.out.println(e);
}
table.setBounds(33, 28, 335, 203);
contentPane.add(table);
}}
try this code:
String status = (String)table.getModel().getValueAt(row, STATUS_COL);
if ("active".equals(status)) {
setBackground(Color.BLACK);
setForeground(Color.WHITE);
} else {
setBackground(table.getBackground());
setForeground(table.getForeground());
}
table = new JTable(data,column);
当前代码的问题在于创建了一个新的JTable。无论何时创建新表,都会丢失自定义渲染器。因此,在创建表之后,需要将渲染器添加到表中。我看不到在哪里调用getNewRenderTable(…)
方法添加渲染器。
另一个问题是,您应该使用JScrollPane来显示表,然后将滚动窗格添加到框架中。
最后,不要使用空布局。Swing设计用于布局管理器。
我试图根据单元格的结果将jtable中一行的颜色更改为红色
JTable可以为列中的每种数据类型使用不同的呈现器。您可以通过覆盖
prepareRenderer(…)来执行行级渲染,而不是为每个数据类型创建自定义渲染器
方法
JTable
。
守则的基本结构是:
JTable table = new JTable(...)
{
public Component prepareRenderer(
TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
// add custom rendering here
return c;
}
};
查看表行呈现以获取一个示例,该示例演示如何根据行中的数据为行着色。
如何更改DataTable中单击行的颜色? 我有我的数据表和一个JavaScript来对单击行的数据执行一些操作: 谢谢
我正在尝试根据行标准更改背景行颜色。我离得很近,但有些事情我不能完全理解。(我相信这是因为我从底层列表中提取对象,而不是动态地获取数据。我标记了下面代码的这一部分) 在下面的示例中,每一行颜色都基于一个具有成功或失败值的对象(MyObj)。如果myObj有一个成功值,行应该是绿色的。如果myObj有一个失败值,那么行应该是红色的。如果myObj没有值,则应使用默认行颜色。
这是我的输出窗口。 我想改变JTable下的空白区域的颜色,它是灰色的。我想把它换成白色。
问题内容: 我有一个3列的JTable。我已经为所有3列设置了这样的代码(也许不是很有效?)。 在一个随机的背景颜色为每一行返回一个组件。 程序运行时如何将背景更改为其他随机颜色? 问题答案: 一种方法是存储模型中每一行的当前颜色。这是一个固定在3列3行的简单模型: 注意通话; 这将导致仅更新表的该行。 渲染器可以从表中获取模型: 更改行的颜色很简单:
我正在为我的python项目使用Pycharm。我不知道发生了什么,但它曾经在左边距/边沟中显示哪些行是新的,哪些行来自原始文件。我没有(有意地)改变我的偏好,所以我不知道为什么它不再为差异着色。 我已经检查过了 编辑器 但这并没有突出任何东西。我已经玩过首选项中的设置,但它没有帮助。谁能帮我指出正确的方向?
我试图弄清楚如何更改JTable中一行中单词的颜色。 例如,这是我的句子,在一行中; dmpsrv日志“2013年3月12日星期二15:33:03”(格林尼治标准时间)(DB=SS@2)pid=662node=“B2-W4”执行时间=1(s) 每一行的结构都是相同的,我想用粗体显示用户名。 但是我不知道我该怎么做?有人给点诡计吗? 谢谢