G
Guest
Gast
Hallo!
Ich bin gerade dabei mir die Grundlagen der JTable-Komponente anzueignen, bin jetzt aber auf ein merkwürdiges Problem gestoßen. Sobald ich die JTable in ein JScrollPane setze, wird man Fenster überdimensional groß (soll heißen: wesentlich größer, als es sein muss), obwohl ich pack() benutze.
Hier mal der Code der Testklasse, bei der ich etwas mit JTable rumspielen wollte und bei der das Problem aufgetreten ist:
Ohne JScrollPane hat das Fenster übrigens die optimale Größe.
Ich wäre euch sehr dankbar, wenn ihr mir da auf die Sprünge helfen könntet. Ich habe schon ein paar Tricks ausprobiert, z.B. über setPreferredSize der JScrollPane die Größe der Tabelle zuzuordnen, aber das war auch nie von Erfolg gekrönt.[/code]
Ich bin gerade dabei mir die Grundlagen der JTable-Komponente anzueignen, bin jetzt aber auf ein merkwürdiges Problem gestoßen. Sobald ich die JTable in ein JScrollPane setze, wird man Fenster überdimensional groß (soll heißen: wesentlich größer, als es sein muss), obwohl ich pack() benutze.
Hier mal der Code der Testklasse, bei der ich etwas mit JTable rumspielen wollte und bei der das Problem aufgetreten ist:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTableTest extends JFrame {
private JButton button;
private JTextField column, row, content;
private JLabel columnLabel, rowLabel, contentLabel;
private JTable table;
public JTableTest() {
super("Tabellen Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cont= getContentPane();
table = new JTable(5,5);
JScrollPane scroll = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
cont.add(BorderLayout.CENTER, scroll);
columnLabel = new JLabel("Column:");
rowLabel = new JLabel("Row:");
contentLabel = new JLabel("Content");
column = new JTextField("1");
row = new JTextField("1");
content = new JTextField("Content");
JPanel controlPanel = new JPanel(new FlowLayout());
button = new JButton("Hole Inhalt");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
content.setText((String)table.getValueAt(Integer.parseInt(column.getText()), Integer.parseInt(row.getText())));
}
});
controlPanel.add(button);
controlPanel.add(columnLabel);
controlPanel.add(column);
controlPanel.add(rowLabel);
controlPanel.add(row);
controlPanel.add(contentLabel);
controlPanel.add(content);
cont.add(BorderLayout.SOUTH, controlPanel);
System.out.println(table.getHeight()+ " " + table.getWidth());
pack();
setVisible(true);
}
public static void main(String args[]) {
JTableTest test = new JTableTest();
}
}
Ohne JScrollPane hat das Fenster übrigens die optimale Größe.
Ich wäre euch sehr dankbar, wenn ihr mir da auf die Sprünge helfen könntet. Ich habe schon ein paar Tricks ausprobiert, z.B. über setPreferredSize der JScrollPane die Größe der Tabelle zuzuordnen, aber das war auch nie von Erfolg gekrönt.[/code]