Zum Inhalt springen

Panel nicht sofort sichtbar....


Sathoan

Empfohlene Beiträge

Ich habe hier ein kleines prob.... Und zwar habe ich frame, in dieses frame packe ich zwei panel und mache eines sichtbar - klappt auch wunderbar. Nun möchte ich auf ein event hin dieses panel unsichtbar machen und das andere sichtbar - das klappt leider nicht... das zweite panel wird erst sichtbar wenn ich das fenster mit der hand (automatisch verändern klappt auch nicht) größer oder kleiner mache... Woran liegt das?

Hier mal der code...:

import java.awt.Button;

import java.awt.Checkbox;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Label;

import java.awt.Panel;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class Dialog1 extends Frame implements ActionListener, ItemListener

{

Button bt1;

Button bt3;

TextField Pw1;

TextField Pw2;

Panel panel;

Frame rahmen;

Button bt2;

Checkbox Cbox1;

Checkbox Cbox2;

Panel panel2;

/*****************

* Konstruktor *

****************/

public Dialog1()

{

setTitle("Login");

setSize(200, 200);

// Neue Panel erzeugen + panel hinzufuegen und sichtbar machen

panel = new Panel();

panel2 = new Panel();

add(panel);

panel.setVisible(true);

// Layout Manager einrichten

panel.setLayout(new FlowLayout());

panel2.setLayout(new GridLayout(5, 2));

// Buttons und Fields zum Panel hinzufuegen

panel.add(new Label("Name"));

panel.add(Pw1 = new TextField("test", 20));

panel.add(new Label("Passwort"));

panel.add(Pw2 = new TextField("test", 20));

Pw2.setEchoChar('*');

panel.add(bt1 = new Button("Test"));

// Buttons und Fields zum Panel2 hinzufuegen

panel2.add(

new Label("Ist die Archivierung der Scan-Belege beendet?"));

panel2.add(Cbox1 = new Checkbox());

panel2.add(new Label("Ist der Interpreter heruntergefahren?"));

panel2.add(Cbox2 = new Checkbox());

panel2.add(bt2 = new Button("Connect"));

bt2.setVisible(false);

// ActionListener hinzufuegen

bt1.addActionListener(this);

bt2.addActionListener(this);

Cbox1.addItemListener(this);

Cbox2.addItemListener(this);

// WindowListener hinzufuegen

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent we)

{

System.exit(0);

}

});

}

//Button Event

public void actionPerformed(ActionEvent ae)

{

Object quelle = ae.getSource();

if (quelle == bt1)

{

String a = Pw1.getText();

String b = Pw2.getText();

String c = "test";

String d = "test";

if (a.equals© && b.equals(d))

{

// altes panel unsichtbar machen

panel.setVisible(false);

panel.removeAll();;

//größe anpassen und neus panel hinzufügen und sichtbar machen

setSize(280,200);

add(panel2);

panel2.setVisible(true); //??

this.repaint(); //??

panel2.repaint(); //??

}

else

{

bt1.setLabel("BAD");

}

panel2.setVisible(true); //??

this.repaint(); //??

panel2.repaint(); //??

}

if (quelle == bt2)

{

bt2.setBackground(Color.red);

bt2.setLabel("Verarbeite");

connect();

}

}

//Chkbox Event

public void itemStateChanged(ItemEvent e)

{

if (Cbox1.getState() == true && Cbox2.getState() == true)

{

bt2.setVisible(true);

}

}

public void connect()

{

try

{

Client Cl = new Client();

}

catch (Exception e)

{

e.printStackTrace(System.out);

}

}

/****************

* Startpunkt *

***************/

public static void main(String[] args)

{

Frame rahmen = new Dialog1();

rahmen.setVisible(true);

}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Genau kann ich dir das auch nicht erklären.

Ich weiß nur das ich meinen Fenstern auch immer die pack Methode aufgerufen habe, wenn ich da irgendwelche Größen geändert habe oder Sachen unsichtbar gemacht habe.

Aber man muss ja auch nicht alles verstehen. Hauptsache ist doch das es funktioniert

:D

Link zu diesem Kommentar
Auf anderen Seiten teilen

mit der methode setVisible() setzt du nur ob es sichtbar sein soll oder nicht. Aber wie Pinhead schon sagte:

Original geschrieben von Pinhead

Versuche doch mal

this.pack();

. Bei dieser Methode nehmen sich die Objekte soviel Platz wie sie brauchen und das Fenster wird neu gezeichnet. Vielleicht hilft das.

zeichnet setVisible() das Fenster nicht neu sondern pack() tut das für dich. Du kannst pack() auch weglassen, dann musst du dir eine andere Methode suchen, die dir das Fenster neu zeichnet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...