Fenster mit Button aufrufen

Artena

Mitglied
Hallo,
ich möchte ein Fenster erstellen, auf dem eine ausklappbare Liste (Choice) und ein Button, der dann ein weiteres Fenster mit einer Grafik drauf aufruft.
Leider funktioniert folgender Code nicht. Wie kann ich das machen?
Vielen Dank für eure Hilfe im Voraus.
Grüße Artena

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

public class TestFrame extends Frame
{
    Panel panel= new Panel();    
    Choice choice = new Choice();
    Button button = new Button("Schaltfläche");

  public TestFrame ()
  {
    setTitle("Ein reines, unbeflecktes Frame");  // Fenstertitel setzen
   
    //setSize(600,600);                            // Fenstergröße einstellen 
    addWindowListener(new TestWindowListener());
   
   
    button.setForeground(Color.RED);                    // Vordergrundfarbe auf "rot" setzen
    button.setBackground(Color.WHITE);                  // Hintergrundfarbe auf "weiß" setzen
    button.addActionListener(new TestActionListener()); // EventListener für Schaltfläche hinzufügen
    add(button); // EventListener für das Fenster hinzufügen
   
    panel.add(new Button("OK"));
    panel.add(new Button("Abbrechen"));
    add(panel);
    add(new DrawingPanel());
   
 
    /**
     * choice.add("1");
    choice.add("2");
    choice.add("3");
    choice.add("4");
    choice.add("5");
    add(choice);

    add(choice);
     */
   

    //add(choice);
   

        
    setSize(300,100);
    
    pack();
                                           // (notwendig, damit das Fenster geschlossen werden kann)
    setVisible(true);                            // Fenster (inkl. Inhalt) sichtbar machen
  }
  class DrawingPanel extends Panel
  {
    public void paint(Graphics g)
    {
      g.setColor(Color.GRAY);           //Basis der Türme
      g.fillRect(60, 200, 100, 10);
      g.setColor(Color.GRAY);
      g.fillRect(200, 200, 100, 10);
      g.setColor(Color.GRAY);
      g.fillRect(340, 200, 100, 10);
     
      g.setColor(Color.GRAY);           //Stäbe der Türme
      g.fillRect(105, 50, 10, 150);
      g.setColor(Color.GRAY);
      g.fillRect(245, 50, 10, 150);
      g.setColor(Color.GRAY);
      g.fillRect(385, 50, 10, 150);
      //g.setColor(Color.GRAY);
      //g.drawString("Hallo Welt!", 300, 150);
      g.setColor(Color.WHITE);
      g.drawRect(220, 300, 300, 200);              
    }
  } 

  class TestWindowListener extends WindowAdapter
  {
    public void windowClosing(WindowEvent e)
    {
      e.getWindow().dispose();                   // Fenster "killen"
      System.exit(0);                            // VM "killen"
    }          
  }

  public static void main (String args[])
  {
    new TestFrame ();
  }
}
class TestActionListener implements ActionListener
  {
    public void actionPerformed(ActionEvent e)
    {
      System.out.println("Schaltfläche wurde gedrückt");
    }          
  }
 
Zuletzt bearbeitet von einem Moderator:
Hi.
Zuallererst möchte ich dich bitten den Code immer in CodeTags zu posten, das erleichtern alles das Lesen des Codes enorm. Das ist natürlich auch in deinem Interesse, da du dann eher Hilfe kriegst.
Jetzt zu deinem Problem: Ich habe das mal bei mir laufen lassen und der Button war nicht sichtbar. Da hat im Prinzip nur ein Layout gefehlt. Der Button und der Listener dazu funktionieren aber.
Probier also mal folgendes:
Code:
setLayout(new BorderLayout());
add(button, BorderLayout.NORTH);
add(choice, BorderLayout.CENTER);
/*
Statt ohne "setLayout(...)
und statt add(button)/add(choice)
*/
 
Vielen Dank🙂 Das nächste mal berücksichtige ich den CodeTags.
Eine Frage hab ich noch:
Nachdem ich den Button gedrückt habe erscheint ja eine Schaltfläche mit der Aufschrift "Schaltfläche gedrückt". Wie kann ich stattdessen eine Grafik drauf erscheinen lassen? Ich hab ja schon die Methode paint(Grafik g). Wie kann ich die in die Schaltfläche einfügen?
 
Also wenn du den Button klickst soll ein weiteres Fenster aufploppen in dem dann die Zeichnung aus DrawingPanel zu sehen ist?
Wenn ja: beim Klicken des Buttons (also im ActionListener) ein neues Frame erstellen und da drin das Panel anzeigen.
 

Zurück
Oben