Neues Panel in JFrame anzeigen durch Button klick

Status
Nicht offen für weitere Antworten.

sockeqwe

Mitglied
Hi, ich habe ein ärgerliches Problem bei einer Darstellung.
Und zwar möchte ich so ein Serverprogramm machen.
Ich benutze dabei ein JFrame auf dem das Panel config geladen wird mit TextFields um eben werte
für den Server einzugeben. Dann klickt man auf den OK Button,
dann wird eine Funktion aufgerufen die die Einstellungen auf die Gültigkeit überprüft "checkconfig()".
Ist alles ok wird die funktion "startserver()" aufgerufen, und da ist jetzt das problem.
In dieser Funktion "startserver()" wird ein neues Panel "console" gemacht, das eine Textarea,
ein Textfield und einen Button drauf hat.
(die letzteren zwei sind auf einen eigenen Panel mit dem namen "unten" zum "console" pannel hinzugefügt).

Es soll also so eine kleines Consolenprogramm für einen Server sein, in dem man
Befehle für den Server eingeben kann ...

PROBLEM:
Das alte Panel "config" wird vom JFrame mit remove() gelöscht, und das neue "console"
mit add() auf dem JFrame gegeben.
Nur das Problem ist, dass wenn ich auf den Configbestätigen Button drücke das "config"
panel vom JFrame gelöscht wird. So weit ok. Nur das man dann nur mehr
ein leeres JFrame sieht und erst wenn ich die Größe des JFrame-fensters ändere
das neue Panel "console" sichtbar wird.

Und da komm ich einfach nicht weiter, keine Ahnung was da fehlt,
dass es das "config" Panel gleich darstellt ....

Ich hoffe mir kann jemand weiter helfen

Hier mal der Code:

Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class server extends JFrame{

	public static server manager;
	public static JPanel config,console, unten;
	public JTextField t_chips, t_smallblind,t_bigblind, t_command,t_port; 
	public JTextArea history;
	public int chips;
	public int small;
	public int big,port;
	public int width, height;
	public ServerSocket serversocket;
	
	
	public server(String titel, int w, int h)
	{
		super(titel);
	
		Dimension d= java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 
		this.setLocation((d.width-w)/2,(d.height-h)/2);
		//this.setResizable(false);
		this.setSize(w, h);
	
		
		
		config=new JPanel();
		config.setLayout(new GridLayout(5,2));
		
		JLabel l_chips, l_smallblind, l_bigblind, l_port; 
		l_chips=new JLabel("                      Chipswert: ");
		l_smallblind=new JLabel("                      Small Blind: ");
		l_bigblind=new JLabel("                      Big Blind: ");
		l_port=new JLabel("                      Port: ");
		
		
		t_chips=new JTextField();
		t_smallblind=new JTextField();
		t_bigblind=new JTextField();
		t_port=new JTextField();
		
		
		JButton los = new JButton(new AbstractAction("Server starten") { 
			 /**
			 * 
			 */
			private static final long serialVersionUID = 1L;

			public void actionPerformed(ActionEvent e) {
				checkconfig();
				   } 
		    });
		
		config.add(l_chips);
		config.add(t_chips);
		config.add(l_smallblind);
		config.add(t_smallblind);
		config.add(l_bigblind);
		config.add(t_bigblind);
		config.add(l_port);
		config.add(t_port);
		config.add(los);
		
		
		config.setVisible(true);
		
	
		
		
		
		
		
		this.add(config);
		
		Image ico=this.getToolkit().getImage("5.jpg");
		this.setIconImage(ico);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		this.setVisible(true);
		
	}
	
	public void sendcommand(String befehl)
	{
		history.setText(history.getText()+befehl+"\n");
	}
	
	public void realrepaint()
	{
		this.setSize(this.width-1,this.height-1);
		this.setSize(this.width, this.height);
		
	}
	
	public void startserver()
	{
		try {
			serversocket = new ServerSocket( port );
			serversocket.accept();
			
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		
		console=new JPanel();
		console.setLayout(new BorderLayout());
		history=new JTextArea();
		//history.setAutoscrolls(true);
		history.setEditable(false);
		JScrollPane sp=new JScrollPane(history);
		history.setCaretPosition(0);
		
		
		
		console.add(sp,BorderLayout.CENTER);
		unten=new JPanel();
		t_command=new JTextField();
		t_command.setSize(350,20);
		
		JButton go = new JButton(new AbstractAction("Go") { 
			 /**
			 * 
			 */
			private static final long serialVersionUID = 1L;

			public void actionPerformed(ActionEvent e) {
				sendcommand(t_command.getText());
				   } 
		    });
		unten.setLayout(new BorderLayout());
		unten.add(t_command,BorderLayout.CENTER);
		unten.add(go, BorderLayout.EAST);
		
		console.add(unten,BorderLayout.SOUTH);
		
	
		this.remove(config);
		this.add(console);
		
		console.repaint();
		
		console.setVisible(true);
		this.repaint();
		
		//this.realrepaint();
		
		
		
	}
	
	
	
	public void checkconfig(){
		boolean fehler=false;
		try {
		chips=Integer.parseInt(t_chips.getText());
		small=Integer.parseInt(t_smallblind.getText());
		big=Integer.parseInt(t_bigblind.getText());
		port=Integer.parseInt(t_port.getText());
		
		
		}
		catch (Exception e) {
			fehler=true; 			
		}
		
		if(big<small) fehler=true;
		if (chips<big) fehler=true; 
		if (port<1 || port>65535) fehler=true;
		
		
		if (fehler==true) 	
JOptionPane.showMessageDialog(null, "Fehler bei der Angabe: \n 
Vergewissern Sie sich das Sie alle Daten ausgefüllt haben \n 
und nur Ganzzahlen eingegeben haben \n 
und den Smallblind kleiner als den Bigblind gesetzt haben
 \n und die Chips auf mindesten einen Bigblind gesetzt haben.
\n\n Vergewissern Sie sich auch, dass Sie den Port \n auf eine Ganzzahl 
zwischen 1 und 65535 gesetzt haben.", "Eingabe Fehler", 0);
		
		else startserver(); 
		
	}
	
	public static void main(String[] args) {
		manager=new server("Net Poker Server",400,200);
		manager.repaint();

	}

}
 

Wildcard

Top Contributor
Nach dem Entfernen/Hinzufügen von Komponenten muss validate auf dem Container aufgerufen werden.
Alternativ kannst du auch das CardLayout verwenden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
Dit_ Mit Button "Weiter" neues Panel laden, altes ausblenden... AWT, Swing, JavaFX & SWT 4
G JavaFX Code in neues Projekt übernehmen AWT, Swing, JavaFX & SWT 0
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
M Swing Durch Usereingabe neues Objekt AWT, Swing, JavaFX & SWT 2
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
B JavaFX ImageView neues Bild zuweisen AWT, Swing, JavaFX & SWT 19
I Neues JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11
D Neues Dialog Mittig auf dem Bildschirm AWT, Swing, JavaFX & SWT 4
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
K Java Button öffnet neues Fenster AWT, Swing, JavaFX & SWT 5
X Swing Ein neues Fenster öffen aber ohne ein extra Prozess zu starten AWT, Swing, JavaFX & SWT 1
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
G JavaFX Neues Fenster erstellen AWT, Swing, JavaFX & SWT 3
A Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI AWT, Swing, JavaFX & SWT 7
W Neues TableModel und JTable wird nicht refreshed AWT, Swing, JavaFX & SWT 3
Wirago Swing neues Fenster nicht sichtbar AWT, Swing, JavaFX & SWT 6
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
GianaSisters AWT Per Button neues Element auf den jPanel setzen AWT, Swing, JavaFX & SWT 6
J Mit Button neues Fenster öffnen AWT, Swing, JavaFX & SWT 17
B Warten bis neues ImageIcon zugewiesen ist AWT, Swing, JavaFX & SWT 3
J jme neues projekt öffnen AWT, Swing, JavaFX & SWT 4
T neues Fenster durch Button öffnen funktioniert nicht!! AWT, Swing, JavaFX & SWT 2
H Applet JApplet soll neues Tab im Browser öffnen AWT, Swing, JavaFX & SWT 2
X Swing Neues Fenster erzeugen AWT, Swing, JavaFX & SWT 3
M Swing jcombobox als jtable-editor: neues Item auswählen AWT, Swing, JavaFX & SWT 4
O Button (ActionPerformed) soll neues JFrame erzeugen AWT, Swing, JavaFX & SWT 8
H Swing [gelöst]Neues Swing Element erstellen AWT, Swing, JavaFX & SWT 4
H Swing neues fenster AWT, Swing, JavaFX & SWT 2
D Neues Java Fenster öffnen AWT, Swing, JavaFX & SWT 2
G JList und ein neues Element oben in der Liste einfügen AWT, Swing, JavaFX & SWT 4
N Durch Button drücken neues Fenster öffnen AWT, Swing, JavaFX & SWT 13
I Applet --> neues Fenster öffnen AWT, Swing, JavaFX & SWT 11
N Threads kein neues Fenster erzeugen lassen AWT, Swing, JavaFX & SWT 4
F neues Fenster öffnen AWT, Swing, JavaFX & SWT 2
N in jScrollPane, neues Swing Element hinzufügen AWT, Swing, JavaFX & SWT 6
T Jbutton geklickt, dann neues Fenster AWT, Swing, JavaFX & SWT 4
M Will ein neues Fenster AWT, Swing, JavaFX & SWT 13
D Neues JPanel ohne Symbolleisteneintrag AWT, Swing, JavaFX & SWT 6
G JButton benutzen um ein neues JFrame zu erstellen AWT, Swing, JavaFX & SWT 3
J Problem: neues Fenster bei dispose öffnen AWT, Swing, JavaFX & SWT 8
M neues Frame per klick anzeigen AWT, Swing, JavaFX & SWT 9
M Neues Programm? AWT, Swing, JavaFX & SWT 20
G Neues Frame über Button öffnen lassen AWT, Swing, JavaFX & SWT 15
S MVC - Neues Frame, neue View, neuer Controller? AWT, Swing, JavaFX & SWT 3
hamburger_jung Mit Button Klick neues Fenster öffnen. AWT, Swing, JavaFX & SWT 1
G Neues Model für JTextField erstellen AWT, Swing, JavaFX & SWT 8
M fortführung neues Bild laden AWT, Swing, JavaFX & SWT 12
M neues Bild laden AWT, Swing, JavaFX & SWT 15
V JOptionPane neues outfit mit BasicOptionPaneUI? AWT, Swing, JavaFX & SWT 22
J JList - doppelklick auf item -> neues fenster öffnet sich AWT, Swing, JavaFX & SWT 2
M Neues Fenster öffnen AWT, Swing, JavaFX & SWT 2
D in neues Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 3
G JTree. Neues Element hinzufügen und Selection beibehalten! AWT, Swing, JavaFX & SWT 3
M Tooltip / neues Fenster AWT, Swing, JavaFX & SWT 6
J Neues Problem AWT, Swing, JavaFX & SWT 9
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben