Ändern der Hintergrundfarbe von JTable
Ich habe eine Tabelle, aber das problem ist, dass das panel nicht zeigen seine Hintergrundfarbe. Ich habe versucht Einstellung der scrollpane-hintergrund, Farbe, etc. Aber es funktioniert nicht. Der Rahmen verfügt über eine Schaltfläche "Überprüfen", die, wenn Sie angeklickt wird, zeigt eine Tabelle unter sich. Bis es geklickt wird, wird der Bereich, in dem die Tabelle angezeigt wird solid gray. Ich will das ganze Teil zu sein Elfenbein hintergrund. Bitte helfen Sie mir das problem zu diagnostizieren.
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();
}
Völlig unabhängig ... vermeiden Abfragen der Datenbank auf dem Event Dispatch Thread. Siehe Concurrency in Swing für mehr info
Dies ist eine separate Methode addTable'. Es muss einberufen werden, in der actionPerformed. Wenn nicht hier, wo dann soll ich es sagen ,Sir?
Die Datenbank-Abfrage passieren soll, auf einem worker-thread zu vermeiden, blockiert den EDT. Zum Beispiel die
Dies ist eine separate Methode addTable'. Es muss einberufen werden, in der actionPerformed. Wenn nicht hier, wo dann soll ich es sagen ,Sir?
Die Datenbank-Abfrage passieren soll, auf einem worker-thread zu vermeiden, blockiert den EDT. Zum Beispiel die
SwingWorker
Klasse kann verwendet werden, für dieInformationsquelleAutor Gomathi | 2012-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scrollpanes enthalten eine weitere Komponente, bekannt als der ViewPort. Dies ist eigentlich, wo die Komponenten zugewiesen wurde, um den Bildlauf-Bereich Hinzugefügt.
Wenn Sie gewährleisten wollen, dass die JTable als transparent (
table1.setOpaque(false);
), dann brauchen Sie, um die Ansicht zu ändern-ports hintergrundSonst, den Tisch deckend und
table1.setFillsViewportHeight(true);
zu zwingen, die Tabelle zu füllen den gesamten viewportAKTUALISIERT
Funktioniert gut für mich
Können Sie kommentieren Sie die Zeile Schaffung Abschnitt und es wird immer noch Farbe in Elfenbein.
Check mein update. Habe ich getestet und es funktioniert einwandfrei bei mir
von Ihnen Kommentare mKorbel, stellen Sie sicher, dass die frames content-Bereich hintergrund ist auch VOR dem erstellen der Tabelle und aus dem code denke ich auch das der
panel1
sollten Sie den hintergrund festlegen, BEVOR Sie die Tabelle erstellenWarum ist dieser Vektor benutzt, Sir? Wird die Codierung funktioniert nur, wenn ich es benutzt habe, Sir?
Der Vektor verwendet, weil ich don ' T haben Zugang zu Ihrer Datenbank und müssen die Ergebnisse der Tabelle, wenn es aufgefüllt wurde sowie besiedelt. Sie brauchen es nicht, es hat keine Wirkung auf das Ergebnis. Mein Beispiel unterhält die Deckkraft (true) und verwendet die
fillsViewportHeight
EigenschaftInformationsquelleAutor MadProgrammer
warum meinst du funktioniert nicht ???
diese könnte besser sein, im Falle, dass Sie wollen, spielen Sie mit der Deckkraft ???
InformationsquelleAutor mKorbel