테이블을 추가했지만 패널에 배경색이 표시되지 않는다는 문제가 있습니다. scrollpane 배경색 설정 등을 시도했지만 작동하지 않습니다. 프레임에는 '확인'버튼이 있습니다.이 버튼을 클릭하면 그 아래에 테이블이 표시됩니다. 클릭 할 때까지 표가 나타날 부분은 단색 회색입니다. 나는 전체 부분이 상아 배경이되기를 바란다. 친절하게 문제를 진단하도록 도와주세요.JTable의 배경색 변경
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();
}
이벤트 파견 스레드에서 데이터베이스를 쿼리하지 마십시오. 자세한 내용은 [Swing의 동시성] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html)을 참조하십시오. – Robin
@Robin 이것은 별도의 메소드 'addTable'입니다. actionPerformed에서 호출되어야합니다. 여기 없으면 어디에 붙여야합니까? – Gomathi
EDT를 막지 않도록 데이터베이스 쿼리를 작업자 스레드에서 수행해야합니다. 예를 들어,'SwingWorker' 클래스를 사용할 수 있습니다. – Robin