Frage von RuheLp, 20

Javacode Frame Problem?

irgendwie tauchen die Buttons nicht auf hat da jmd. eine idee?

package game2;

import java.awt.Frame; import javax.swing.JButton; import javax.swing.JFrame; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import javax.swing.JPanel;

public class Game2 extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;
private JPanel sammeln;
private JButton schliessen;
private JButton einstellungen;
private JButton info;
private JButton ende;

public static void main(String[] args) {
    
    JFrame f = new JFrame("Menü");
    
    
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(400, 400);
    f.setLayout(null);
    f.setVisible(true);
    
}

public Game2(String title){
    super(title);

sammeln = new JPanel();
sammeln.setBounds(300, 300, 300, 300);
add(sammeln);
    
schliessen = new JButton("Spiel Starten!");
schliessen.setBounds(120, 40, 160, 40);
schliessen.addActionListener(this);
sammeln.add(schliessen);

einstellungen = new JButton("Einstellungen!");
einstellungen.setBounds(120, 120, 160, 40);
sammeln.add(einstellungen);

info = new JButton("Credits!");
info.setBounds(120, 200, 160, 40);
info.addActionListener(this);
sammeln.add(info);

ende = new JButton("Ende!");
ende.setBounds(120, 280, 160, 40);
sammeln.add(ende);

}

@Override
public void actionPerformed(ActionEvent e) {
    
    if(e.getSource() == schliessen );
            fenster();
            
    if(e.getSource() == info){
            String options = ( "OK");
                    JOptionPane.showOptionDialog(null, "IbornLP", "Credits",         
    JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,null, options);}
    
    if(e.getSource() == einstellungen );
            auswahl();
            
    if(e.getSource() == ende );
            System.exit(0);        
    
}
    
    
    public static void fenster(){
    
        JFrame fenster = new JFrame("Spiel");
    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fenster.setSize(650, 350);
    fenster.setLayout(null);
    fenster.setVisible(true);
    
    
    
    }       

private void auswahl() {
    throw new UnsupportedOperationException("Not supported yet."); 
}
    
    
    
    }
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Pascal25565, 6

Deins:

einstellungen = new JButton("Einstellungen!");
einstellungen.setBounds(120, 120, 160, 40);
sammeln.add(einstellungen);

Meins:

einstellungen = new JButton("Einstellungen!");
sammeln.add(einstellungen);

Du musst zuerst den Button adden danach kannst du den Bounds etc. setzen.

MfG

Antwort
von xJan45x, 20

Hi, 

Du packst die ganzen Buttons auf ein JPanel also ein externes Panel. Du musst dieses Panel aber auch dem eigentlich Frame hinzufügen. 

So wie ich das im Code sehe tust du dieses nicht.

Vor allen warum lasst du deine Game2 Klasse aus der JFrame Klasse erben(extends), wenn du JFrame in der main neu definiert?

Mache entweder das Extends JFrame weg. Und setzte dafür private static JFrame f = new JFrame("tilte"); oder du machst das JFrame f weg. 

Da du aus der Klasse erbst. Kannst du dirket auf die Funktionen zugreifen(add(), remove() paint....)

Zu dein Problem: Versuche mal nachdem du die ganzen Buttons erstellt hast das Panel hinzufügen mit f.add(panel); oder add(panel) falls du direkt mit extends Arbeites.

Lg Jan.

Antwort
von SureYouCan, 17

Statt

JFrame f = new JFrame(...);

Solltest du eher eine Instanz deiner Klasse erzeugen. Denn da hast du ja auch schließlich die Buttons hinzugefügt ;)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten