我使用以下代码来设置jTable中的备用背景行颜色:
table = new JTable(model);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()
{//alternate background color for rows
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (!isSelected)
c.setBackground(row % 2 == 0 ? Color.white : Color.lightGray);
return c;
};
});
它是有效的。但是,我想使用自定义颜色(如rgb(242242))代替浅灰色作为替代颜色,但在执行以下操作时:
final Color alternateColor = new Color (242,242,242);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()
{//alternate background color for rows
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (!isSelected)
c.setBackground(row % 2 == 0 ? Color.white : alternateColor);
return c;
};
});
替代颜色完全被忽略,所有行都有白色背景。看起来此方法仅适用于属于颜色枚举的颜色。怎么会这样?
下面是一个完整的工作示例,随后是结果屏幕:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import javax.swing.*;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class Test extends JFrame
{
private JTable table = null;
private Object[] columnTitle = { "Column1", "Column2", "Column3" };
private Object[][] data = null;
private DefaultTableModel model = null;
private JPanel panel = null;
private JScrollPane scroller = null;
public Test()
{
super();
setLayout(new BorderLayout());
panel = new JPanel();
scroller=new JScrollPane();
data = new Object[3][3];
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
data [i][j]="Test";
}
}
model = new DefaultTableModel(data, columnTitle);
table = new JTable(model);
final Color alternateColor=new Color(242,242,242);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()
{//alternate background color for rows
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if ( !isSelected )
c.setBackground(row % 2 == 0 ? Color.white : alternateColor);
return c;
};
});
scroller.setViewportView(table);
panel.add(scroller);
this.add(panel, BorderLayout.CENTER);
}
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
Test test = new Test();
test.setLocationRelativeTo(null);
test.pack();
test.setVisible(true);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
对我来说很好。。。
import com.alee.laf.WebLookAndFeel;
import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class TestTable {
public static void main(String[] args) {
new TestTable();
}
public TestTable() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
WebLookAndFeel.install();
DefaultTableModel model = new DefaultTableModel(new Object[]{"Test"}, 10);
JTable table = new JTable(model);
final Color alternateColor = new Color(255, 0, 255);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {//alternate background color for rows
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (!isSelected) {
c.setBackground(row % 2 == 0 ? Color.white : alternateColor);
}
return c;
}
});
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
有可能是其他一些渲染已被使用,渲染器设置为的表不是屏幕上的表。。。许多其他的因素,一个可以运行的例子来证明你的问题会消除。。。
重写渲染器的方法只有在您有数据(即。String)在所有列中使用默认渲染器。如果您的表中有日期或数字数据,需要不同的渲染器,该怎么办?
在本例中,请查看适用于所有数据类型的解决方案的表行呈现。
或者您可以使用:
UIManager.put("Table.alternateRowColor", Color.YELLOW);
不知道这个属性是否适用于所有LAF。
问题内容: 我正在使用python 2.7和xlwt模块进行excel导出 我想设置一个我可以使用的单元格的背景色 但我想设置自定义颜色smth。例如#8a8eef或是否存在可能的颜色调色板,因为浅蓝色无法正常工作:) 谢谢 问题答案: 如果您不使用而是逐步构建对象,则这是使用用户友好颜色名称的另一种方法:
问题内容: 首先,我要说的不是关于渲染表格单元。 这是我基于数据库中的对象使用2D数组构建的TableModel 。 我的问题是如何使用表中的选定行取回对象。请注意,我无法创建新对象并用行数据填充它。我必须获取查询的对象(中的对象)。那么,他们用表行设置Object的任何方法吗? 这是我的课。 问题答案: 无需在创建模型之前拆分对象,而是将其直接添加到模型中并允许模型为您完成工作… 例如 这样,您
我有一个按钮,它包含一个抽屉和文本。我希望按钮的背景不同于正常提供的(最好是一个普通的颜色)。这工作得很好,我只需在XML文件中使用属性并相应地分配颜色。然而,我希望背景改变为不同的颜色时,选择或聚焦(状态选择器)。 我尝试用定义的颜色在一个可绘制的文件夹中创建一个选择器(当处理按钮的文本时很好地工作),如下所示: 并将此xml设置为属性,如下所示: 但这会引起一个力闭合,说明: 但资源就在那里。
我将Firebaseui的登录屏幕进行子类化: 当我看到登录屏幕上加载的xib LoginText时,我的实现工作正常。但背景颜色却被完全忽略了。 如何从该子类在登录屏幕上强制使用bg颜色? 编辑:如果我将下面的答案与View.InsertSubView(imageViewBackground,在:0)一起应用 我得到的是: 正如您所看到的,图像被插入到包含login按钮的视图下。如果我设置“在:
本文向大家介绍Android自定义Button并设置不同背景图片的方法,包括了Android自定义Button并设置不同背景图片的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android自定义Button并设置不同背景图片的方法。分享给大家供大家参考,具体如下: 1、自定义MyButton类 2、 在xml布局文件中添加MyButton控件,像应用普通的Button控件一样。 其
问题内容: 我正在尝试为xssfcell设置一些自定义的颜色(从hexcode或rgb值开始),但是即使我提供了其他颜色,单元的颜色也正在变成黑色。我尝试通过以下方式进行操作: //程序结束 我尝试了其他在相关问题答案中提到的其他方法,但是这些方法都没有解决我的问题。请帮帮我。 问题答案: 这是由于软件包org.apache.poi.ss.util不完整引起的。 以及和仅基于级别而不是基于级别。但