JFrame, JPanel, JTable

keeepa

Mitglied
Hi Leute,
ich habe so ein eigenartiges Problem. Ich weiß auch gar nicht wonach ich da suchen kann. Keine Fehlermeldung! Ich weiß auch gar nicht woran das liegen könnte. Aber ich weiß, dass es meinem Programm nicht gut geht. Ich habe eine Klasse wo ich mir einen JFrame erzeuge und ein JPanel mit zwei Buttons drauf lege. Und dann habe ich noch meine Klasse wo ich mir ein Menu erzeuge und die dazugehörigen Funktionen. In dieser zweiten Klasse erzeuge ich auch ein JPanel und lege dort eine JTabel drauf. Anschließend packe ich diese JPanel mit Tabelle auf meinen JFrame. Symptome: Eigentlich funktioniert das so wie ich es mir vorstelle, aber ich muss immer die Größe meines JFrames mit der Maus ändern, damit ich die JTable zusehen bekomme. Und das gefällt mir nicht. Hier ein bisschen dirty code! :) Wäre sehr dankbar, wenn jemand mal einen Blick drauf werfen könnte!

JFrame Klasse
Code:
public class GuiAddressBook1 extends JFrame {
    JTable table;
  

    public GuiAddressBook1(){
     this.getContentPane().setLayout(new BorderLayout());
     
        MenuAddressBook1 menu = new MenuAddressBook1(this);
        this.setJMenuBar(menu);

        JButton buttonDelRow = new JButton("delRow");
        JButton buttonAddRow = new JButton("addRow");
        
        JPanel buttonPanel = new JPanel();
        
        
        buttonPanel.setLayout(new BorderLayout());
        
        buttonPanel.add(buttonDelRow, BorderLayout.EAST);
        buttonPanel.add(buttonAddRow, BorderLayout.WEST);
        this.getContentPane().add(buttonPanel,BorderLayout.SOUTH);

        
		this.setSize(600,600);
		this.setVisible(true);
		
    }
Teil der Menu Klasse
Code:
	   	JPanel tablePanel = new JPanel();
	   	TableSorter sorter = new TableSorter(meinModel, null);
        JTable table = new JTable(sorter);
        sorter.setTableHeader(table.getTableHeader());
        JScrollPane scrollPane = new JScrollPane(table);
        //table.setCellSelectionEnabled(true);
        table.setPreferredScrollableViewportSize(new Dimension(550, 500));
        tablePanel.add(scrollPane);
        mainFrame.getContentPane().add(tablePanel,BorderLayout.NORTH);
        mainFrame.table.setModel(meinModel);
 
Wie meinst du das mit der Größe ändern? Nur ein bischen ändern, damit das Fenster neu gezeichnet wird?
 
hmm ich weiss auch nicht woran das liegt, aber hat es einen besonderen grund warum die das ScrollPane auf ein panel legst? ansonsten kannst du mal versuchen das zu aendern
Code:
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
 
Habe jetzt mal repaint() ausprobiert. Habe es mal auf den JFrame, JPanel und JTable angewendet. Hat leider nicht funktioniert. Habe auch mal validate() ausprobiert, aber klappt auch nicht. Irgend eine andere Idee?
 
Problem gelöst! Ein mainFrame.getContentPane().validate(); war die Lösung für mein Problem. Trotzdem vielen Dank für die schnelle Antwort.


So es!
Code:
        scrollPane.setViewportView(table);
        
        table.setPreferredScrollableViewportSize(new Dimension(550, 500));
        tablePanel.add(scrollPane);
       
        mainFrame.getContentPane().add(tablePanel,BorderLayout.NORTH);
        mainFrame.getContentPane().validate();
        mainFrame.table.setModel(meinModel);
 
Zurück