# Probleme mit JButton



## _Teamplayer_ (1. Dez 2016)

Hallo,

undzwar ich habe angefangen ein kleines "Programm" zu schreiben, jetzt habe ich nur ein kleines Problem mit den JButton´s da der Button:

```
ende = new JButton("Beenden");
```
(Zeile 59)
immer im Vollbild modus angezeigt wird. Wisst ihr was ich da ändern muss?
Fehler werden mir nicht angezeigt.
Danke für jede Antwort!

Lg Sven


```
package papadaten;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import java.awt.*;

public class main extends JFrame implements ActionListener
{
  
    private JButton start;
    private JButton einstellung;
    private JButton info;
    private JButton ende;
  
    public static void main(String[] args)
    {
        System.out.println("[DataSave-SvenGotzmann] Erstelle Backup...");
        //Backup erstellen + checken ob erstellt ist
        System.out.println("[DataSave-SvenGotzmann] Backup erstellt!");
        System.out.println("[DataSave-SvenGotzmann] Lade Daten...");
        //checken ob daten geladen sind
        System.out.println("[DataSave-SvenGotzmann] Daten geladen!");
        System.out.println("[DataSave-SvenGotzmann] Starte Programm...");
      
        main frame = new main(null);
        frame.setTitle("DataSave-SvenGotzmann");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1000,600);
        frame.setLocation(200,50);
        //frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setVisible(true);
      
        System.out.println("[DataSave-SvenGotzmann] Programm gestartet!");
      
    }
  
    public main(String title)
    {
      
        super(title);
      
        start = new JButton("Spiel starten");
        start.setBounds(120,40,160,40);
        start.addActionListener(this);
        add(start);
      
        einstellung = new JButton("Einstellungen");
        einstellung.setBounds(120,120,160,40);
        einstellung.addActionListener(this);
        add(einstellung);
      
        info = new JButton("Informationen");
        info.setBounds(120,200,160,40);
        info.addActionListener(this);
        add(info);
      
        ende = new JButton("Beenden");
        ende.setBounds(120,280,160,40);
        ende.addActionListener(this);
        add(ende);
      
    }


        @Override
        public void actionPerformed(ActionEvent e) {
          

            if (e.getSource()== start ){
              
                //fenster();
            }
          
            if (e.getSource()== info ){
                Object[] options = { "OK"};
              

                JOptionPane.showOptionDialog(null, "Programmiert von _Teamplayer_ mit Hilfe von jadahb1","Informationen",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
            }
          
            if (e.getSource()== einstellung){
              
              
            }
          
            if (e.getSource()== ende){
                Object[] options1 = { "Ja"};
                Object[] options2 = { "Nein"};
              
                int auswahl = JOptionPane.showOptionDialog(null, "Möchtest du das Spiel wirklich beenden?", "Beenden?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
              
                 if (auswahl == JOptionPane.YES_OPTION)
                  {
                    System.exit(0);
                  }
            }
        }
}
```


----------



## Joose (1. Dez 2016)

_Teamplayer_ hat gesagt.:


> .... jetzt habe ich nur ein kleines Problem mit den JButton´s da der Button:
> 
> ```
> ende = new JButton("Beenden");
> ...


Wo genau liegt jetzt das Problem, ich verstehe die Fehlerbeschreibung nicht. Was passiert? Was erwartest du dir stattdessen?

Der Button wird im "Vollbildmodus" angezeigt? Glaub ich kaum, eher das du den falschen LayoutManager verwendest und einfach dein Button als einziges angezeigt wird und sich allen Platz nimmt den er bekommen kann. Lies dich in LayoutManager ein und setzte sie ein  Verwende nicht das "null"-Layout!

Ansonsten zu deinen Code:
Klassennamen werden in UpperCamelCase geschrieben
Main ist ein schlechter Name für eine Klasse
Man leitet nicht von JFrame ab, wenn man dessen Funktionalität nicht erweitern will


----------



## Nuiton (1. Dez 2016)

Wenn du ein JButton zu dem JFrame hinzufuegst, dann macht es Sinn dass dein Button im Vollbildmodus angezeigt wird. Du brauchst eventuell ein JPanel. Zu dem JPanel fuegst du dann dein JButton hinzu, und das JPanel selber fuegst du dem JFrame hinzu.


----------



## _Teamplayer_ (2. Dez 2016)

Hey danke für eure Hilfe,
nach etwas längerem Googeln habe ich meinen Fehler gefunden: undzwar muss ich noch das Layout festsetzen:

```
frame.setLayout(null);
```
jetzt werden auch die Buttons wieder richtig angezeigt  

Lg Sven


----------



## Joose (2. Dez 2016)

_Teamplayer_ hat gesagt.:


> ```
> frame.setLayout(null);
> ```
> jetzt werden auch die Buttons wieder richtig angezeigt


Und wie in meinem Beitrag schon geschrieben, sollst du nicht das "null"-Layout verwenden!
Klar werden dir jetzt die Sachen richtig angezeigt aber das ganze funktioniert nur für genau diese Größe des Schirmes und sollte eine Komponenten sich mal dynamisch vergrößern/verkleiner kann es das ganze Design kaputt machen 
Daher lies dich in LayoutManager ein und verwende diese


----------



## _Teamplayer_ (2. Dez 2016)

Ok danke werde mich mal damit beschäftigen


----------

