Neues Panel und Button unsichtbar

f10

Aktives Mitglied
Hallo zusammen,

ich versuche gerade eine GUI zu programmieren, die ein neues Panel aufruft, wenn ich auf einen Button klicke. In diesem Panel moechte ich dann einen Text ausgeben lassen und einen Zurueckbutton setzen.

So soll sieht die GUI aus vom Prinzip her:

8ze2d1.jpg



Wie kann ich also 1. dem Button sagen, dass wenn man ihn klickt er ein neues Panel aufrufen soll?
Ich haette irgendwie in diese Richtung gedacht, aber war anscheinend zu einfach gedacht:

Java:
public void btn_panel_ActionPerformed(ActionEvent evt) {
    Panel cp = new Panel(null);
    add(cp);
  }

edit: [EDIT]Das 2. Problem konnte ich bereits selbst loesen.

Vielen Dank fuer eure Hilfe.[/EDIT]

Gruss
f10
 

Anhänge

  • 8ze2d1.jpg
    8ze2d1.jpg
    3,7 KB · Aufrufe: 26
Zuletzt bearbeitet:
T

trääät

Gast
alleine die methode verrät schon das du von Frame erbst ... sollte man nicht tun ... und auch das du awt nutzt ... sollte man auch nur tun wenn unbedingt nötig ... ansonsten lieber swing ...

noch dazu : alles was GUI verändert im EDT ... nicht selbst dran rum basteln ...

und dann müsstest du das Frame auch mal updaten damit das neue Panel überhaupt angezeigt wird ...


sind alles grundlagen von GUI ... und die solltest du dir mal angucken ... denn es steht alles im netz
 

f10

Aktives Mitglied
versuch mal nach den adden ein validate() und/oder repaint() aufzurufen...

Auch damit funktioniert es noch nicht.

Praktisches Beispiel:

Ich moechte einen Adventskalender programmieren, jedes mal wenn man ein Tuerchen oeffnet, soll sich ein neues Panel oeffnen, aber man soll auch zurueckgehen koennen.
 

f10

Aktives Mitglied
Der ist noch nicht wirklich umfangreich,

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 28.11.2012
  * @f10
  */

public class TestAdvent extends Frame {
  // Anfang Attribute
  private JPanel pnl_hintergrund = new JPanel(null, true);
    private JLabel lbl_kat = new JLabel();
    private JButton btn_panel = new JButton();
    private JButton btn_verschwinde = new JButton();
    private JButton btn_tu = new JButton();
  // Ende Attribute

  public TestAdvent(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 300; 
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    pnl_hintergrund.setBounds(0, 0, 305, 281);
    cp.add(pnl_hintergrund);
    lbl_kat.setBounds(64, 40, 131, 33);
    lbl_kat.setText("Text");
    pnl_hintergrund.add(lbl_kat);
    btn_panel.setBounds(64, 96, 105, 41);
    btn_panel.setText("neues Panel");
    btn_panel.setMargin(new Insets(2, 2, 2, 2));
    btn_panel.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_panel_ActionPerformed(evt);
      }
    });
    pnl_hintergrund.add(btn_panel);
    btn_verschwinde.setBounds(64, 160, 105, 41);
    btn_verschwinde.setText("unsichtbar");
    btn_verschwinde.setMargin(new Insets(2, 2, 2, 2));
    btn_verschwinde.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_verschwinde_ActionPerformed(evt);
      }
    });
    btn_verschwinde.setEnabled(false);
    pnl_hintergrund.add(btn_verschwinde);
    btn_tu.setBounds(192, 112, 73, 65);
    btn_tu.setText("tu");
    btn_tu.setMargin(new Insets(2, 2, 2, 2));
    btn_tu.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        btn_tu_ActionPerformed(evt);
      }
    });
    pnl_hintergrund.add(btn_tu);
    // Ende Komponenten

    setVisible(true);
  }

  // Anfang Methoden
  public void btn_panel_ActionPerformed(ActionEvent evt) {
    Panel cp = new Panel(null);
    add(cp);
    validate();
  }

  public void btn_verschwinde_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  }

  public void btn_tu_ActionPerformed(ActionEvent evt) {
    btn_verschwinde.setEnabled(true);

  }

  // Ende Methoden

  public static void main(String[] args) {
    new TestAdvent("TestAdvent");
  }
}

btn_panel soll eben ein neues panel aufrufen, welches ich dann mit Text und weiteren Button versehen moechte.
 

Volvagia

Top Contributor
Du platzierst auf den Frame ein Panel das die ganze Fläche über das Frame abdeckt und dann fügst du dahinter noch ein Panel ein.
 

PrincE

Aktives Mitglied
Wenn du jetzt noch bei den Action Events eine Methode aufrufst und die richtig benennst, wird klarer was du machen möchtest. Ich bitte dich, dass du auch nochmal über die Namen deiner Attribute Gedanken machst. Tu Kat und co kann ich nicht so ganz nach vollziehen.

Ansonsten bleibt dir noch übrig, dass du beschreibst was dein eigentliches Ziel ist.
z.B.

Ich möchte das mit einem Klick auf den Button X, Y nicht mehr sichtbar ist. Z soll stattdessen angezeigt werden. Hierfür soll das und das möglich sein.
usw.

Dann können wir dir sagen, dafür lohnt sich ein CardLayout, damit kannst du dies und das tun.

Java:
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Beschreibung
 * 
 * @version 1.0 vom 28.11.2012
 * @f10
 */

public class TestAdvent
{
	private JPanel panelHintergrund;
	private JLabel labelKat;
	private JButton buttonPanel;
	private JButton buttonVerschwinde;
	private JButton buttonTu;

	private JFrame frame;

	public TestAdvent(String title)
	{
		frame = new JFrame();
		frame.setTitle(title);
		frame.setSize(300, 300);
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.getContentPane().setLayout(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		initUIComponents();
		configureUIComponents();
		initUIListeners();
		addUI();

		frame.setVisible(true);
	}

	private void initUIComponents()
	{
		panelHintergrund = new JPanel(null);
		labelKat = new JLabel();
		buttonPanel = new JButton();
		buttonVerschwinde = new JButton();
		buttonTu = new JButton();
	}

	private void configureUIComponents()
	{
		labelKat.setBounds(64, 40, 131, 33);
		labelKat.setText("Text");

		buttonPanel.setBounds(64, 96, 105, 41);
		buttonPanel.setText("neues Panel");
		buttonPanel.setMargin(new Insets(2, 2, 2, 2));

		buttonVerschwinde.setBounds(64, 160, 105, 41);
		buttonVerschwinde.setText("unsichtbar");
		buttonVerschwinde.setMargin(new Insets(2, 2, 2, 2));
		buttonVerschwinde.setEnabled(false);

		buttonTu.setBounds(192, 112, 73, 65);
		buttonTu.setText("tu");
		buttonTu.setMargin(new Insets(2, 2, 2, 2));

		panelHintergrund.setBounds(0, 0, 305, 281);
	}

	private void addUI()
	{
		panelHintergrund.add(labelKat);
		panelHintergrund.add(buttonPanel);
		panelHintergrund.add(buttonVerschwinde);
		panelHintergrund.add(buttonTu);
		frame.getContentPane().add(panelHintergrund);
	}

	private void initUIListeners()
	{
		buttonVerschwinde.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent evt)
			{

			}
		});

		buttonTu.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent evt)
			{

			}
		});

		buttonPanel.addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent evt)
			{

			}
		});
	}

	public static void main(String[] args)
	{
		new TestAdvent("TestAdvent");
	}
}
 
Zuletzt bearbeitet:

f10

Aktives Mitglied
Tu bedeutet Tu etwas und Kat steht fuer eine Kategorie. Die beiden sind ja ohne Funktion erstmal, waren nur fuer mich gedacht.

Nun passiert aber auch nichts weiter, wenn ich auf den btn_panel klicke. Hingegen soll sich ja ein neues Panel oeffnen, wobei sich mir sowieso gerade die Frage stellt, wie ich dieses dann mit der GUI designe?


edit: ich moechte, dass sich ein neues Panel oeffnet, wenn ich auf einen Button klicke. Mehr ersteinmal nicht. Auf diesem Panel will ich spaeter einen Button und Text platzieren. Wird dieser Button geklickt soll man wieder zurueckkommen ins Ursprungspanel.
 

Volvagia

Top Contributor
Ich würde kein neues Panel hinzufügen, sondern den Bereich in den das Panel angezeigt werden soll von Anfang an vorbereiten.
Unter Swing (AWT habe ich schon lange nicht mehr verwendet, weiß nicht ob es da auch so einfach ist) wäre es beispielsweiße möglich, ein JScrollPane neben die "Kästchen" (Buttons) des Kalenders zu legen und dort einfach den Content anzuzeigen.
Mit einen neuen Panel wärst du dir nie sicher ob das Frame genug Platz bietet etc.
 

jgh

Top Contributor
wenn du allen Warnungen und Tipps zu trotze es so machen willst, wie beschrieben bietet sich die removeAll-Methode an (but be careful!!!)

[JAVA=80] public void btn_panel_ActionPerformed(ActionEvent evt) {
removeAll();
Panel anotherPanel = new Panel(null);
anotherPanel.setBackground(Color.RED);
add(anotherPanel);
validate();
}[/code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Panel entfernen, neues hinzufügen Java Basics - Anfänger-Themen 2
X GUI: neues Panel in einer Applikation anzeigen lassen Java Basics - Anfänger-Themen 2
S Neues Fenster/Panel nach Knopfdruck Java Basics - Anfänger-Themen 2
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
B Erste Schritte nio oder io für neues Projekt Java Basics - Anfänger-Themen 1
AnnaBauer21 org.w3c.dom.Element - Neues Element hinzufügen Java Basics - Anfänger-Themen 4
C Neues Objekt mit Beziehung zu bereits bestehendem Objekt Java Basics - Anfänger-Themen 4
T Erste Schritte Totaler Noob in Java will was neues lernen Java Basics - Anfänger-Themen 22
E Knopfdruck neues Fenster öffnen Java Basics - Anfänger-Themen 5
F Verweis oder neues Objekt? Java Basics - Anfänger-Themen 8
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
F Neues Objekt oder nur ein Verweis? Java Basics - Anfänger-Themen 5
K Erste Schritte Neues Fenster mit Textinhalt öffnen Java Basics - Anfänger-Themen 6
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
L OOP Neues Objekt bei jeder Eingabe erstellen (Objekte speichern?) Java Basics - Anfänger-Themen 10
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
P Array reversed in ein neues Array Java Basics - Anfänger-Themen 5
P Vererbung Neues Objekt aus Vorlage erzeugen Java Basics - Anfänger-Themen 1
M Beim Klicken auf X neues Fenster Java Basics - Anfänger-Themen 4
S Neues Fenster auf Knopfdruck Java Basics - Anfänger-Themen 12
J Button drücken neues Fenster?! Java Basics - Anfänger-Themen 5
M Neues Objekt erzeugen mit Klassennamen oder ohne Java Basics - Anfänger-Themen 5
I Neues Klassenobjekt nicht "ansprechbar" Java Basics - Anfänger-Themen 5
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
M Neues Objekt? Java Basics - Anfänger-Themen 6
K Neues Bild bei eingabe bestätigung erscheinen Java Basics - Anfänger-Themen 21
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
M Neues Fenster Java Basics - Anfänger-Themen 2
S Innerhalb eines Fensters ein neues erschaffen Java Basics - Anfänger-Themen 7
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
K neues Fenster mit Button öffnen Java Basics - Anfänger-Themen 17
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
M Neues Objekt erstellen Java Basics - Anfänger-Themen 3
P neues Objekt Java Basics - Anfänger-Themen 4
J Neues Forum Thema erstellen mit java(httpclient) Java Basics - Anfänger-Themen 11
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
M Neues Fenster öffnen altes schützen Java Basics - Anfänger-Themen 10
S mit clickevent neues formular öffnen Java Basics - Anfänger-Themen 2
K Neues Fenster Öffnen? Java Basics - Anfänger-Themen 18
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
B neues Objekt erzeugen Java Basics - Anfänger-Themen 7
E Neues Java Fenster öffnen Java Basics - Anfänger-Themen 4
D Neues ContentPane öffnen Java Basics - Anfänger-Themen 3
B neues Problem! Java Basics - Anfänger-Themen 14
G JSP ohne neues Fenster aufrufen. Java Basics - Anfänger-Themen 8
S neues Objekt benennen Java Basics - Anfänger-Themen 3
I Probleme bei "Neues Spiel" Java Basics - Anfänger-Themen 3
P Neues Fenster ueber Hauptfenster Java Basics - Anfänger-Themen 4
T Möchte ein neues Objekt erzeugen mit Wert von anderem Objekt Java Basics - Anfänger-Themen 9
L Wie kann ich auch in einem ActionListener ein neues java Pro Java Basics - Anfänger-Themen 8
gurgi mit button neues Frame öffnen Java Basics - Anfänger-Themen 7
G Neues File mit vorgegebenen Einstellungen erstellen? Java Basics - Anfänger-Themen 7
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
D neues Fenster in GUI Java Basics - Anfänger-Themen 2
S Methode soll ein neues Objekt vom Typ Class XYZ Java Basics - Anfänger-Themen 7
G neues String Array in super() übergeben Java Basics - Anfänger-Themen 3
S vom button ein neues fenster öffnen Java Basics - Anfänger-Themen 1
L neues Fenster und Hauptfenster sperren Java Basics - Anfänger-Themen 11
N Open Source für Anfänger, neues Projekt-> Interesse? Java Basics - Anfänger-Themen 36
I Neues Spiel starten Java Basics - Anfänger-Themen 9
K Neues Fenster per Buttonklick, Texteingabe speichern Java Basics - Anfänger-Themen 9
S Problem neues Objekt erzeugen Java Basics - Anfänger-Themen 4
M removeAll() und neues Hinzufügen Java Basics - Anfänger-Themen 2
A neues Objekt in main methode erstellen Java Basics - Anfänger-Themen 2
N Wie öffne ich ein neues Applet? Java Basics - Anfänger-Themen 4
G neues Paket importieren Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
R Spieleprogrammierung Menüeintrag "Neues Spiel" Java Basics - Anfänger-Themen 2
G Neues Bild bei MouseOver Java Basics - Anfänger-Themen 2
R Gui + neues Fenster Java Basics - Anfänger-Themen 8
bernd Neues JFrame erzeugen? Java Basics - Anfänger-Themen 8
M Kann neues Servlet nicht hinzufügen Java Basics - Anfänger-Themen 5
S in einem PopUp ein neues Popup erzeugen? Java Basics - Anfänger-Themen 5
J neues gui hinzugefügt .... jetzt gehts nicht mehr Java Basics - Anfänger-Themen 10
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
P Herausfinden, auf welchem Panel des CardLayouts man gerade ist? Java Basics - Anfänger-Themen 12
CptK Interface 2 von einander unabhängige Frames mit Panel gleichzeitig nutzen Java Basics - Anfänger-Themen 66
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
L Panel verkleinert sich unerklärlicherweise Java Basics - Anfänger-Themen 7
N Mehrere Forms auf einem Panel Java Basics - Anfänger-Themen 6
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
J Panel auf Hintergrund Java Basics - Anfänger-Themen 5
J Panel und Menü Java Basics - Anfänger-Themen 6
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
D Hintergrund jpg auf Panel Java Basics - Anfänger-Themen 3
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
A Frage zu einer Methode - Panel arbeitet nicht ordnungsgemäß Java Basics - Anfänger-Themen 2
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
S Image in Panel laden Java Basics - Anfänger-Themen 12
D Panel von unten herausfahren Java Basics - Anfänger-Themen 2
S mehrere Rechtecke in ein Panel Java Basics - Anfänger-Themen 2
L panel verschmiert beim draggen! Java Basics - Anfänger-Themen 2
J Panel + Label anzeigen - Ich kriege es nicht hin Java Basics - Anfänger-Themen 3
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben