Swing Ein 2D-Game Menü mit framefüllenden Button

Feeder

Bekanntes Mitglied
Hallo,

ich bin ein Java Einsteiger und habe mich mit den Grundlagen von Java vertraut gemacht, kleinere Aufgaben kann ich recht gut bewältigen. Nun wage ich den nächsten Schritt: ein 2D Game. Leider finde ich einen GUI Fehler im Menü nicht.


Java:
package game2D;


public class Main {

    public static void main(String[] args) {
        new Game();
    }
    
}
Java:
package game2D;

import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class Game {
    
        JButton start = new JButton();
        JButton credits = new JButton();

    
    public Game() {
        JFrame frame = new JFrame("Spiel");
        Dimension screen = frame.getToolkit().getScreenSize();
        frame.setSize(500, 500);
        frame.setLocation(
            (int) ((screen.getWidth() - frame.getWidth()) / 2), 
            (int) ((screen.getHeight() - frame.getHeight()) / 2));

        
        start.setSize(20, 20);
        start.setLocation(
        (int) ((frame.getWidth() - start.getWidth()) / 2), 440);
        start.setName("Start");
        frame.add(start);
        frame.setResizable(true);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);

    }
    
}


Noch ist nicht alles was ich brauche benutzt doch wenn man folgendes Programm ausführt, wird der Button Framefüllend. Das habe ich ihn nicht befohlen !!!:rtfm::rtfm::rtfm:

Zudem lässt sich im objekt.setLocation() nicht mal 0,5 rechnen. Wo ist da der große Fehler. Danke im voraus.
 
Zuletzt bearbeitet:
Da du dem Frame kein Layout zugewiesen hast, ist es automatisch im BorderLayout. Schreib mal frame.setLayout(null).
Allerdings ist die Benutzung vom NullLayout allgemein verschrien.
 
Der von eclipse auch. Nur lässt der das Layout zuerst auf Standart 😉
Unter den Properties gibt es einen Punkt Layout. Da kannst du dein Gewünschtes aussuchen.
 
Wenn ich mit den obigen Code so anschaue, keimt in mir doch die Frage, welche Art von 2D dir vorschwebt,

Mal angesehen davon solltest du dich in die Programmierung grafischer Oberflächen unter Swing einlesen, hier hauptsächlich das richtige nutzen von top und low level Containern und deren verschachtelung.


Aus dem Code fetzen schließe ich das du dich noch nicht allzulange mit der Thematik auseinander setzt, z.b
Kannst du über ein einfaches

Java:
.setLocationRelativeTo(null);

Der klasse JFrame das Fenster mittig auf deinem Screen platzieren, dies erfordert aber ein paar Voraussetzungen.

Zum anderen, FINGER WEG VON GUI BUILDERN wenn Du Dich im Vorfeld nicht zumindest schon mal mit Layout Managern auseinandergesetz hast, ansonsten hast du haufenweise GUI Code durch den du nicht durchblickst, und das hilft dir auch nicht wirklich weiter, ich rate dir wenn du das durchziehen möchtest dich mit eventmanagement , gameloops und natürlich Swing vorab auseinander zu setzen, und die Grundlagen der OOP sollten sitzen, dann steht dem nichts im Wege.
 
Zuletzt bearbeitet:

Zurück
Oben