Fit JTable zu füllen JPanel
Hi hier sind meine codes für meine Tabelle Einstellungen:
String [] column = {"MacAddress","PcName","OperatingSystem","IpAddress","Port","Status"};
model = new DefaultTableModel(0,column.length);
model.setColumnIdentifiers(column);
mainTable = new JTable(model);
mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
for(int i=0;i<=column.length-1;i++){
mainTable.getColumnModel().getColumn(i).setPreferredWidth(300);
}
pane = new JScrollPane(mainTable);
pnlTabel = new JPanel();
pnlTabel.setBorder(BorderFactory.createTitledBorder(""));
pnlTabel.setPreferredSize(new Dimension(dim.width*70/100, dim.height*60/100));
pnlTabel.add(pane);
addMainPanel(pnlTabel);
Hier ist mein addMainPanel () - Funktion:
public void addMainPanel(Component pnl){
mainPanel.add(pnl);
mainPanel.revalidate();
}
Und hier ist mein code für mein mainPanel:
mainPanel = new JPanel();
mainPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
add(mainPanel,"Center");
und ich bin mit border-layout für meinen Rahmen:
setLayout(new BorderLayout(0,0));
Mein problem ist, dass auch ich mit diesem Satz von code, um meine JTable zu passen, aber es scheint nicht alle die, diese, diese-code:
mainTable.setAutoResizeMode(JTa![enter image description here][1]ble.AUTO_RESIZE_OFF);
for(int i=0;i<=column.length-1;i++){
mainTable.getColumnModel().getColumn(i).setPreferredWidth(300);
}
Wann wird diesen code, meine jtable nicht die Größe ändern sondern nur hinzufügen, auf eine horizontale scroll-Leiste am unteren Rand.
die Gefahren der Verwendung von setXXSize 😉 DONT, je, nach, dass ein Bestandteil, der wird NIE WIEDER versuchen zu berechnen, die Größen-Hinweise ... details
InformationsquelleAutor Chris | 2012-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, eine
JTable
um den verfügbaren Platz auszufüllen, sollten Sie es in einemJPanel
die eineBorderLayout
layout-manager. Vergessen Sie auch nicht über dieJScrollPane
die dafür sorgt, dass wenn die Tabelle passt nicht in den Blick (z.B. zu viele Zeilen), werden Scrollbalken angezeigt:Wenn Sie andere Inhalte, die Sie anzeigen wollen, neben dem Tisch, können Sie jene im NORDEN, SÜDEN, OSTEN, WESTEN, Teile der "Inhalt" (die gewickelt werden kann, die in anderen Gremien, wenn mehrere Komponenten platziert werden).
InformationsquelleAutor icza
Keine Beleidigung gemeint, aber .. dein code und folglich Ihre Frage ist ein Chaos 😉 außerdem nicht erklären, was genau Sie erreichen wollen.
Versuchen zu entwirren, wobei die verschachtelten layouts/Größenanpassung Merkmalen (wie gesehen in die snippets, ist möglicherweise nicht vollständig):
Beiseite: absichtlich untelling Namen, um zu demonstrieren, wie mischen naming Systeme neigen dazu, tragen zur Allgemeinen Verwirrung 🙂 Spielt eigentlich keine Rolle, ob Sie sich entscheiden für pre-oder postFixing einige Art-Verwandte marker, aber wenn Sie konsequent sein.
In dieser Hierarchie gibt es zwei Ebenen von FlowLayout die im Grunde wird das layout Ihrer Kinder an Ihren jeweiligen Einstellungen und die Anpassung Ihrer eigenen Präferenz entsprechend damit die pref hart codiert wurden auf der Ebene der pnlTable: aber die Tabelle ist pref geändert wird (durch ändern der Spalte einstellen) es nicht Blase weiter bis denn ... hart codierte pref führt nicht Berechnung seiner Größe (weder durch layoutManager und noch uiDelegate, die beide nie die chance bekommen, es zu tun)
Einem anderen Thema - ist das mehr interessant 🙂 - ist, dass die JScrollPane ist etwas besonderes in
Unter der Annahme, dass Sie möchten, dass die Tabelle die scrollPane zu wachsen, wenn die prefWidts der Spalten ändern, gibt es zwei Dingern zu zwicken:
Code zu spielen:
InformationsquelleAutor kleopatra