[Java]Jframe laat Panel pas zien na resize, wat doe ik fout?

Pagina: 1
Acties:
  • 125 views sinds 30-01-2008
  • Reageer

  • Badeend
  • Registratie: Juli 2000
  • Laatst online: 05-08 17:33
Ik ben bezig met het bouwen van een simpele JFrame met daarin een JPanel. Zogauw ik de frame opstart, zie ik de panel niet, maar zogauw ik de frame groter of kleiner maak, dan pas komt de panel tevoorschijn.
Wie kan mij vertellen wat ik fout doe, of wat ik over het hoofd zie?
Dit is de complete code:

Java:
1
2
3
4
5
6
public class App{
    public static void main(String[] args) {

        TestFrame frame = new TestFrame();
    }
}


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import javax.swing.*;
import java.awt.*;

public class TestFrame extends JFrame {
    private TestPanel testPanel;

    public TestFrame() {
        setSize(800,600);
        setVisible(true);
        testPanel = new TestPanel();
        testPanel.validate();
        Container contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());
        contentPane.add(_testPanel, BorderLayout.CENTER);

    }
}


Java:
1
2
3
4
5
6
7
8
9
import javax.swing.*;

public class TestPanel extends JPanel {
    public TestPanel() {
        setBackground(Color.RED);
        setVisible(true);
        add(new JButton("test"));
    }
}

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Dat komt omdat dan pas een redraw wordt getriggered. Het beste is om de setSize en setVisible achteraan te zetten ipv vooraan.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Badeend
  • Registratie: Juli 2000
  • Laatst online: 05-08 17:33
nee, dat is het ook niet... dat mag trouwens ook niks uitmaken lijkt mij..

  • Badeend
  • Registratie: Juli 2000
  • Laatst online: 05-08 17:33
opgelost:

Java:
1
2
3
4
5
6
7
8
public class App{ 
    public static void main(String[] args) { 

        TestFrame frame = new TestFrame(); 
        frame.setSize(800,600);
        frame.setVisible(true);
    } 
}


Wat wel raar is dat wanneer ik setvisible en setsize omwissel, ik nog steeds geen panel te zien krijg.

[ Voor 14% gewijzigd door Badeend op 26-09-2003 21:31 . Reden: wazige zinconstructie ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21-08 14:03

Robtimus

me Robtimus no like you

Op het einde
Java:
1
2
frame.pack();
frame.show();

Helpt dat?


Edit: laat maar, al opgelost.

[ Voor 20% gewijzigd door Robtimus op 26-09-2003 21:54 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs