G
Guest
Gast
Moin Moin wiedermal .-)
Zuerst mal KSKB:
So, was mach ich falsch?
Ich hätt gern das beim Betätigen des Buttons der Inhalt der ContentPane geändert wird. Das andere Panel erscheint auch, aber ohne den Text der in dem JLabel darin steckt. Das erscheint erst bei nem Resizing von dem Fenster. Wenn ich aber bei den Panels das Layout auf null setze wird auch beim Resizing nichts in meinem Panels dargestellt.
Warum ist das so?
Der Grund warum ich das brauche ist das ich gern vor einem Hintergrundpanel andere JPanels darstellen kann, deren Position ich frei definieren will. Entsprechend wär mein Plan in die ContentPane ein grosses Panel und viele kleine packen zu können. Insgesamt hab ich aber mit dem repainting Stellenweise Probleme.
Zuerst mal KSKB:
Code:
package classes;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Gui extends JFrame{
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
(new Gui()).setVisible(true);
}
});
}
public Gui() {
super("Test");
getContentPane().setLayout(null);
setSize(new Dimension(400, 400));
getContentPane().add(getLoginPanel());
}
public void showUnreachable(){
getContentPane().removeAll();
SwingUtilities.invokeLater(new Runnable(){
public void run(){
getContentPane().add(getUnreachable());
getContentPane().repaint();
}
});
}
/**
*
*/
private JPanel getLoginPanel(){
JPanel p=new JPanel();
p.setBackground(Color.GRAY);
p.setOpaque(true);
p.setLayout(new GridLayout(1,1));
// p.setLayout(null);
JButton loginbutton=new JButton("Login");
loginbutton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
showUnreachable();
}
});
p.add(loginbutton);
p.setBounds(100,200,200,100);
return p;
}
/**
*
*/
private JPanel getUnreachable(){
JPanel p=new JPanel();
// p.setLayout(null);
p.setLayout(new GridLayout(1,1));
p.setBackground(Color.GRAY);
p.setBorder(BorderFactory.createEtchedBorder(Color.DARK_GRAY, Color.DARK_GRAY));
p.setOpaque(true);
p.add(new JLabel("Can't connect"));
p.setBounds(100,200,200,30);
return p;
}
/**
*
*/
protected void processWindowEvent(WindowEvent we){
if (we.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}else{
super.processWindowEvent(we);
}
}
}
So, was mach ich falsch?
Ich hätt gern das beim Betätigen des Buttons der Inhalt der ContentPane geändert wird. Das andere Panel erscheint auch, aber ohne den Text der in dem JLabel darin steckt. Das erscheint erst bei nem Resizing von dem Fenster. Wenn ich aber bei den Panels das Layout auf null setze wird auch beim Resizing nichts in meinem Panels dargestellt.
Warum ist das so?
Der Grund warum ich das brauche ist das ich gern vor einem Hintergrundpanel andere JPanels darstellen kann, deren Position ich frei definieren will. Entsprechend wär mein Plan in die ContentPane ein grosses Panel und viele kleine packen zu können. Insgesamt hab ich aber mit dem repainting Stellenweise Probleme.