Unterschiedlichen Inhalt in JFrame laden

cubeless

Mitglied
JPanel in JFrame laden

Hallo,

warum wird bei folgendem Code-Auszug das JPanel nicht angezeigt?
Vielen Dank im Voraus für Antworten!
Grüße
Daniel

import java.awt.*;
import javax.swing.*;


public class MainFrameextends JFrame{

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

public static void main(String args[]){
MainFrame frame= new MainFrame();
}

public MainFrame(){
this.setSize(700,550);
this.setLocation((screenSize.width-700)/2,(screenSize.height-550)/2);
this.setVisible(true);
this.setResizable(false);

Container cp = getContentPane();
cp.setLayout(new FlowLayout());
JPanel panel = new JPanel();

panel.add(new JButton("Test"));
cp.add(panel);

}

}
 
Zuletzt bearbeitet:
Hallo,

das Panel bzw. das Button werden nicht gezeichnet, weil setVisible() vor deren Einfügen aufgerufen wird. Entweder du rufst setVisible() erst auf wenn die Gui vollständig aufgebaut ist. Oder du rufst am Ende die Methode repaint() auf.


Vg Erdal
 
Ok, das habe ich verstanden und korrigiert.

In der oben vorgestellten Klasse wird nun ein ActionEvent ausgelöst und ein neuer Inhalt wird geladen. Dieser Inhalt ist ein Panel mit einem untergeordnetem Canvas.
PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class WelcomeScreen extends JPanel implements KeyListener{
	MyCanvas c = new MyCanvas();
	int coord = 50;
	public WelcomeScreen(){
		setLayout(new GridLayout(1,1));
		add(c);
		addKeyListener(this);
	}
	
	
	class MyCanvas extends Canvas{
		public void paint(Graphics g){
			setBackground(Color.white);
			g.drawString("testTesttest",coord,100);
		}
		
	}
	public void keyPressed(KeyEvent key){
		switch(key.getKeyCode()){
		case KeyEvent.VK_LEFT:	
			coord+=50;
			c.repaint();
			break;
		}
	}
	/** Unused KeyListener-Methods **/
	public void keyReleased(KeyEvent key){}
	public void keyTyped(KeyEvent key){}
		
}

Meine Frage ist: Warum reagiert er nicht auf das KeyEvent?

Danke für Antworten!
Grüße
Daniel
 
Servus Erdal,

danke für die Links!
Ich musste gerade beim Programm testen feststellen, dass es bereits funktioniert hat. Das einzige Problem ist, dass ich das Inhalts-JPanel im JFrame erst anklicken muss, bevor der Keylistener anspringt. Ist das normal?

Grüße
Daniel
 
Zurück