我添加了一个表,但问题是,面板没有显示其背景色。我试过设置滚动窗格的背景色等,但它不起作用。框架有一个按钮“验证”,单击该按钮时,在其下方显示一个表。在单击之前,表格将显示的部分为纯灰色。我希望整个部分是象牙背景。请帮我诊断这个问题。
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn1=DriverManager.getConnection("jdbc:odbc:vasantham","","");
Statement st1=conn1.createStatement();
ResultSet rs1=st1.executeQuery("select * from try where DATEDIFF('d',NOW(),exdate) < 61 order by tname");
ResultSetMetaData md1=rs1.getMetaData();
int cols1=md1.getColumnCount();
model1=new DefaultTableModel();
model1.addColumn("Purpose");
model1.addColumn("Name");
model1.addColumn("Composition");
model1.addColumn("Expiry");
model1.addColumn("Stock");
model1.addColumn("Cost");
model1.addColumn("Type");
model1.addColumn("Supplier");
model1.addColumn("Supplier Number");
model1.addColumn("Rack");
table1=new JTable(model1);
Color ivory=new Color(255,255,208);
table1.setOpaque(false);
table1.setBackground(ivory);
String[] tabledata1=new String[cols1];
int i=0;
while(rs1.next())
{
for(i=0;i<cols1;i++)
{
if(i==3)
{
Date intr1=(rs1.getDate(i+1));
tabledata1[i]=formatter1.format(intr1);
}
else
tabledata1[i]=rs1.getObject(i+1).toString();
}
model1.addRow(tabledata1);
}
JScrollPane scroll1 = new JScrollPane(table1);
scroll1.setBackground(new Color(255,255,208));
scroll1.getViewport().setBackground(ivory);
panel1.setLayout(new BorderLayout());
panel1.setBackground(ivory);
table1.getTableHeader().setBackground(ivory);
panel1.add(scroll1,BorderLayout.CENTER);
frame1.add(panel1,BorderLayout.CENTER);
conn1.close();
}
为什么你的意思是不工作???
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableCellClass {
private JFrame frame = new JFrame("Table Demo");
private String[] columnNames = {"String", "Integer", "Float", "Double", "Locale & Double", "Boolean"};
private Object[][] data = {
{"aaa", new Integer(12), new Float(12.15), new Double(100.05), new Double(12.05), true},
{"bbb", new Integer(5), new Float(7.154), new Double(6.1555), new Double(417.55), false},
{"CCC", new Integer(92), new Float(0.1135), new Double(3.1455), new Double(11.05), true},
{"ddd", new Integer(12), new Float(31.15), new Double(10.05), new Double(23.05), true},
{"eee", new Integer(5), new Float(5.154), new Double(16.1555), new Double(17.55), false},
{"fff", new Integer(92), new Float(4.1135), new Double(31.1455), new Double(3.05), true}};
private TableModel model = new DefaultTableModel(data, columnNames) {
private static final long serialVersionUID = 1L;
@Override
public Class<?> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
};
private JTable table = new JTable(model);
public TableCellClass() {
table.setRowHeight(20);
//table.setPreferredScrollableViewportSize(table.getPreferredSize());
table.setBackground(Color.red);
JScrollPane scroll = new JScrollPane(table);
scroll.getViewport().setBackground(Color.blue);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scroll);
frame.pack();
frame.setLocation(150, 150);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
TableCellClass tableCellClass = new TableCellClass();
}
});
}
}
这可能会更好,如果你想玩不透明???
import java.awt.*;
import javax.swing.*;
public class TableWithTimer {
private static final long serialVersionUID = 1L;
private JFrame frame = new JFrame();
private JScrollPane scroll = new JScrollPane();
private JTable myTable;
private String[] head = {"One", "Two", "Three", "Four", "Five", "Six"};
private String[][] data = new String[25][6];
public TableWithTimer() {
myTable = new TableBackroundPaint0(data, head);
myTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
myTable.setGridColor(Color.gray);
myTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scroll.setViewportView(myTable);
frame.add(scroll, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(100, 100);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
TableWithTimer tableWithTimer = new TableWithTimer();
}
});
}
}
class TableBackroundPaint0 extends JTable {
private static final long serialVersionUID = 1L;
TableBackroundPaint0(Object[][] data, Object[] head) {
super(data, head);
setOpaque(false);
((JComponent) getDefaultRenderer(Object.class)).setOpaque(false);
}
@Override
public void paintComponent(Graphics g) {
Color background = new Color(168, 210, 241);
Color controlColor = new Color(230, 240, 230);
int width = getWidth();
int height = getHeight();
Graphics2D g2 = (Graphics2D) g;
Paint oldPaint = g2.getPaint();
g2.setPaint(new GradientPaint(0, 0, background, width, 0, controlColor));
g2.fillRect(0, 0, width, height);
g2.setPaint(oldPaint);
for (int row : getSelectedRows()) {
Rectangle start = getCellRect(row, 0, true);
Rectangle end = getCellRect(row, getColumnCount() - 1, true);
g2.setPaint(new GradientPaint(start.x, 0, controlColor, (int) ((end.x + end.width - start.x) * 1.25), 0, Color.orange));
g2.fillRect(start.x, start.y, end.x + end.width - start.x, start.height);
}
super.paintComponent(g);
}
}
滚动窗格包含另一个组件,称为视口。这实际上是添加分配给滚动窗格的组件的地方。
如果希望将JTable保持为透明(table1.setOpaque(false))
),然后需要更改视口背景
scroll1.getViewport().setBackground(ivory);
否则,将表设置为不透明,并
table1。设置FillsViewPortheight(真)
强制表格填充整个视口
已更新
对我很管用
model1 = new DefaultTableModel();
model1.addColumn("Purpose");
model1.addColumn("Name");
model1.addColumn("Composition");
model1.addColumn("Expiry");
model1.addColumn("Stock");
model1.addColumn("Cost");
model1.addColumn("Type");
model1.addColumn("Supplier");
model1.addColumn("Supplier Number");
model1.addColumn("Rack");
for (int index = 0; index < 10; index++) {
Vector vector = new Vector();
vector.add("p" + index);
vector.add("n" + index);
vector.add("c" + index);
vector.add("e" + index);
vector.add("s" + index);
vector.add("c" + index);
vector.add("t" + index);
vector.add("s" + index);
vector.add("s" + index);
vector.add("r" + index);
model1.addRow(vector);
}
table1 = new JTable(model1);
Color ivory = new Color(255, 255, 208);
table1.setOpaque(true);
table1.setFillsViewportHeight(true);
table1.setBackground(ivory);
JScrollPane scroll1 = new JScrollPane(table1);
table1.getTableHeader().setBackground(ivory);
add(scroll1, BorderLayout.CENTER);
您可以注释掉行创建部分,它仍将以象牙色绘制。
我试图在基于swing的GUI中更改的背景。我已将该表添加到中。但是,表格中没有单元格的区域不会改变颜色。我尝试更改滚动窗格的背景色和前景色。然而,这也无济于事。我需要编辑JTable的哪个组件来更改白色背景。下面是我代码的一部分。 JTable的代码
问题内容: 我有一个3列的JTable。我已经为所有3列设置了这样的代码(也许不是很有效?)。 在一个随机的背景颜色为每一行返回一个组件。 程序运行时如何将背景更改为其他随机颜色? 问题答案: 一种方法是存储模型中每一行的当前颜色。这是一个固定在3列3行的简单模型: 注意通话; 这将导致仅更新表的该行。 渲染器可以从表中获取模型: 更改行的颜色很简单:
问题内容: 我试过了: 不起作用 编辑:此代码仅在我的项目中不起作用。在其他项目中工作。我可能已经更改了阻止颜色更改的属性。也许NetBeans具有一些保留默认颜色的属性。我注意到了别的东西。我项目中标题的颜色以不同的方式闪烁。在可以进行颜色更改的示例中,我看到了不同的图形。 编辑2:其他。我注意到按钮也不会改变颜色。必须是通用的。希望这可以帮助。不幸的是,SSCCE在这种情况下不起作用,因为我无
我想改变JTable的单元格背景颜色,想从MySQL数据库中获取数据。 我在MySQL中使用一个数据表,它有一个状态字段。如果状态为1,则单元格背景颜色应为红色;如果状态为0,则应更改为红色。
您好,我是java jtable的新手。我正在寻找一种在我的程序中有效的方法,但我没有找到它的任何运气。这是我的Jtable 数据来自ms Access数据库,但我想改变状态列中值为“非活动”的行的背景/前景。我在网上找到了很多例子,但所有的例子在我的程序中都是不可能的。有人能帮帮我吗?这是我的模特 这是创建我的表的方法,以及我如何从数据库中获取数据 我该如何添加以这种方式重新绘制的表格?有人能举
基于这个问题我这样做了: 所以我有票,每张票都有不止一个棋盘。我想换每张票的颜色。 结果: 颜色是正确的,但是在滚动后,颜色变得不规则,如下图所示。 注:每个“ticket0、ticket1、ticket2”等应具有交替颜色。