Java Frame per Button klick öffnen

Ken Masters

Lt. Junior Grade
Registriert
Dez. 2006
Beiträge
334
Hallo, ich habe da ein kleines Problem wo ich nicht mehr weiter komme.

ich habe 2 Frame's. Einen MainWindow und den Frame 'Gamestart'.

Ich möchte nun im Hauptfenster per mausklick auf einen button den Frame 'Gamestart' öffnen. Ich bekomme jedoch ständig eine fehlermeldung.

Code:
public class Mainfenster extends javax.swing.JFrame {
    
    static Mainfenster mf;
    Gamestart gs;

.....

private void losGehtsActionPerformed(java.awt.event.ActionEvent evt) {
        gs.setVisible(true);
    }

Wenn ich das wie oben mache kommt die folgende Fehlermeldung:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at quizspiel.Mainfenster.losGehtsActionPerformed(Mainfenster.java:122)
	at quizspiel.Mainfenster.access$100(Mainfenster.java:11)
	at quizspiel.Mainfenster$2.actionPerformed(Mainfenster.java:63)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)



davor hatte ich es so versucht:

Code:
public class Mainfenster extends javax.swing.JFrame {
    
    static Mainfenster mf;
    Gamestart gs;

.....

private void losGehtsActionPerformed(java.awt.event.ActionEvent evt) {
        gs.open();
    }

die Methode open() habe ich natürlich in der klasse Gamestart stehen mit

Code:
public void open() {
        this.setVisible(true);
    }

resultat ist das gleiche. Was mache ich falsch? danke im voraus für die hilfe
 
Ja, dann... :rolleyes:

Was genau klappt nicht? Dass Du Instanz-Methoden eines Objekts nicht verwenden kannst, solange das Objekt nicht existiert, ist Dir bewusst? Wie man ein Objekt der Klasse "Gamestart" erstellt, weißt Du?
 
also ich stell mal die 2 kompletten quellen rein:

Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package quizspiel;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import quizspiel.GameStarts;

public class Mainfenster extends javax.swing.JFrame implements ActionListener {
    
    static Mainfenster mf;
    GameStarts gs;
    /**
     * Creates new form Mainfenster
     */
    
    
    
    public Mainfenster() {
        initComponents();
        this.setLocationRelativeTo(null);
    }

    public Mainfenster getMainfenster(){
		return mf;
	}
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        willkommensGruß = new javax.swing.JTextField();
        losGehts = new javax.swing.JButton();
        wannAnders = new javax.swing.JButton();
        punkTe = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBackground(new java.awt.Color(233, 233, 233));

        willkommensGruß.setBackground(new java.awt.Color(233, 233, 233));
        willkommensGruß.setEditable(false);
        willkommensGruß.setFont(new java.awt.Font("Monotype Corsiva", 1, 48)); // NOI18N
        willkommensGruß.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        willkommensGruß.setText("Werde Reich!");
        willkommensGruß.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
        willkommensGruß.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                willkommensGrußActionPerformed(evt);
            }
        });

        losGehts.setText("Los geht's");
        losGehts.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                losGehtsActionPerformed(evt);
            }
        });

        wannAnders.setText("Wann anders");
        wannAnders.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                wannAndersActionPerformed(evt);
            }
        });

        punkTe.setText("Punkte");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(willkommensGruß)
                    .addComponent(losGehts, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(wannAnders, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(punkTe, javax.swing.GroupLayout.PREFERRED_SIZE, 276, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(willkommensGruß)
                .addGap(1, 1, 1)
                .addComponent(losGehts, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(wannAnders, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(punkTe, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        pack();
    }// </editor-fold>

    private void willkommensGrußActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    private void losGehtsActionPerformed(java.awt.event.ActionEvent evt) {
      gs.setVisible(true);
    }

    private void wannAndersActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        mf = new Mainfenster();
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Mainfenster.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Mainfenster.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Mainfenster.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Mainfenster.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Mainfenster().setVisible(true);
            }
        });
    }
    
    public void close() {
		this.setVisible(false);
	}
    // Variables declaration - do not modify
    private javax.swing.JPanel jPanel1;
    private javax.swing.JButton losGehts;
    private javax.swing.JButton punkTe;
    private javax.swing.JButton wannAnders;
    private javax.swing.JTextField willkommensGruß;
    // End of variables declaration

    @Override
    public void actionPerformed(ActionEvent e) {
      // this.close();
    }
}


durch klicken des buttons soll das folgende fenster erscheinen:

Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package quizspiel;

import quizspiel.Mainfenster;


public class GameStarts extends javax.swing.JPanel {

    /**
     * Creates new form GameStarts
     */
    public GameStarts() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        willkommensGruß2 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        fragenFeld = new javax.swing.JTextField();
        antwortA = new javax.swing.JTextField();
        antwortB = new javax.swing.JTextField();
        antwortC = new javax.swing.JTextField();
        antwortD = new javax.swing.JTextField();
        fiftyJoker = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        jPanel1.setBackground(new java.awt.Color(233, 233, 233));

        willkommensGruß2.setBackground(new java.awt.Color(233, 233, 233));
        willkommensGruß2.setEditable(false);
        willkommensGruß2.setFont(new java.awt.Font("Monotype Corsiva", 1, 24)); // NOI18N
        willkommensGruß2.setText("Werde Reich!");
        willkommensGruß2.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
        willkommensGruß2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                willkommensGruß2ActionPerformed(evt);
            }
        });

        jLabel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        fragenFeld.setBackground(new java.awt.Color(233, 233, 233));
        fragenFeld.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N
        fragenFeld.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));
        fragenFeld.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));

        antwortA.setEditable(false);
        antwortA.setText("A:");

        antwortB.setEditable(false);
        antwortB.setText("B:");
        antwortB.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                antwortBActionPerformed(evt);
            }
        });

        antwortC.setEditable(false);
        antwortC.setText("C:");

        antwortD.setEditable(false);
        antwortD.setText("D:");

        fiftyJoker.setText("50/50 Joker");

        jButton2.setText("Telefon - Joker");

        jButton3.setText("Tauchen");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(fiftyJoker, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(willkommensGruß2, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(fragenFeld, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(10, 10, 10))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(antwortA)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(antwortB)
                .addContainerGap())
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(antwortC)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(antwortD)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(willkommensGruß2, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addComponent(fragenFeld, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(antwortA, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(antwortB))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(antwortC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(antwortD))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(fiftyJoker, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
    }// </editor-fold>

    private void willkommensGruß2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    private void antwortBActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    // Variables declaration - do not modify
    private javax.swing.JTextField antwortA;
    private javax.swing.JTextField antwortB;
    private javax.swing.JTextField antwortC;
    private javax.swing.JTextField antwortD;
    private javax.swing.JButton fiftyJoker;
    private javax.swing.JTextField fragenFeld;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField willkommensGruß2;
    // End of variables declaration

  public void open() {
        this.setVisible(true);
  }
}

die GUI habe ich mit netbeans gemacht. die methoden etc. steht alles da um bei einem klick den anderen frame zu öffnen. warum klappt das nicht!?? :mad::mad::mad:
 
Du musst (wie bereits mehrfach erwähnt) eine Instanz deines Gamestart-Fensters erstellen...
 
Es haben bereits viele Poster erklärt, warum es nicht klappt. Weißt Du, wie man ein Objekt erstellt?
 
Bevor du dir eine bunte GUI zusammenklickst, solltest du dich vielleicht mit den Grundlagen von Java auseinandersetzen ;).
 
Hallo an alle, danke für die antworten. Ihr habt recht, das ich mich nochmal mit den grundlagen beschäftigen muss bzw. das fenster intanziieren muss.

habe folgendes geändert:

Code:
private void losGehtsActionPerformed(java.awt.event.ActionEvent evt) {                                         
      
        gs = new GameStarts();
        gs.open();
    }

es kommt jetzt zwar zu keiner fehlermeldung, aber das fenster wird auch nicht geöffnet.
das programm ist zwar aktiv aber passieren tu es einfach nichts.
 
Das, was laut Code passiert ist, dass das GameStarts-JPanel sichtbar gemacht wird. Da es aber zu keinem Container hinzugefügt worden ist, kannst du es auch nicht sehen.
Laut deiner Beschreibung soll es in einem neuen Fenster angezeigt werden? Dann musst du auch entsprechend ein neues Fenster (JFrame) erstellen und GameStarts dort hinzufügen. Alternativ kannst du auch GameStarts direkt von JFrame ableiten.
 
public class GameStarts extends javax.swing.JPanel {

daraus muss dann werden:

public class GameStarts extends javax.swing.JFrame {

das schlaue eclipse / netbeans wird dir dann die paar anderen änderungen markieren, die noch zu tun sind.
 
Wie wärs nach der Instanzierung mit gs.setVisible(true); ?
bzw. mittels add(gs); deinem Frame hinzufügen.

Allerdings lernt man nicht so viel, wenn man sich die ganze Anwendung im GUI Builder von Netbeans zusammen bastelt.
 
Zuletzt bearbeitet:
habe jPanel zu JFrame geändert. (am anfang hatte ich das ja auch so,aufgrund der fehlermeldungen hatte ich es dann mal mit JPanel versucht, was irrsinn ist...)

Fehlermeldung :
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: GroupLayout can only be used with one Container at a time

@DJ_We$t:

mit "gs.setVisible(true);" passiert auch nichts. habe ich schon versucht. Zu deinen letzten comment: hast natürlich recht, aber mit netbeans ist es momentan praktischer für mich, wobei ich mehr wert auf die funktionen lege. sieh doch mal... ich bekomme ja nicht mal ein fenster mit den mausklick geöffnet :(

ich weiss echt nicht mehr weiter.
 
Les dir mal ein paar Tutorials zu GUIs in Java durch. Mit dem GUI-Generator lernst du null, man muss auch den Code dahinter verstehen. Und ohne Grundkenntnisse wirst du wohl auch mit den Fehlermeldungen nichts anfangen können.
Stell das Projekt erst mal zurück, so ist das aktuell wenig sinnvoll.
 
Zuletzt bearbeitet:
Dann erstell eine JFrame Klasse in Netbeans, bearbeite diese im GUI Editor, instanziere diese in deiner Main Klasse und setze sie auf Visible(true).

Also in der Main Klasse in etwa NamederKlasse frame = new NamederKlasse();
frame.setVisible(true); <- natürlich in der Event Funktion des Buttons.
 
Die Fehlermeldung bezieht sich auf das GroupLayout. Die problematischen Zeilen sind 140 und 141 in GameStarts. Warum diese Zeilen problematisch sind, findest du in der JFrame-Referenz in den ersten Absätzen. Das sollte reichen, um den Code entsprechend korrigieren zu können.
 
iks-deh schrieb:
Les dir mal ein paar Tutorials zu GUIs in Java durch.
Dem Ratschlag schließe ich mich an. Die GUI-Editoren sind verführerisch, aber besonders für Anfänger eine üble Falle. Zeigt sich hier auch immer wieder im Forum.
Ich bin ja normalerweise nicht so konservativ was Tools angeht, aber GUI-Buildern stehe auch ich kritisch gegenüber, da ich weiß wie kompliziert das in Java ist, selbst wenn man es schon ein paar Mal händisch gemacht hat. Gerade wenn es an die Standard-Layoutmanager geht, braucht es etwas Gehirnschmalz, bis man das verinnerlicht hat. Außerdem weist Swing noch einige andere Fallstricke auf, die man auf diesem vermeintlich einfachen Weg durch einen GUI-Builder garantiert nicht lernt.
 
Zuletzt bearbeitet:
@ DJ_We$t

sauber jetzt geht es. habe ein neues JFrame erstellt. oberfläche gemacht. anschließend den Frame 'Mainfenster' ausgeführt.

ich weiss auch warum das nicht ging, ich habe das zwar vorher auch so gemacht, habe dennoch im gamestarts den teil mit public void main(String[] args) entfernt.

hmm.... bin trotzdem irgendwie durcheinander. wir hatten mal im jahre 2008 ein datenbank projekt. da haben wir ein programm geschrieben, das aus 5 frames bestand, aber nur eines davon (also das Hauptfenster) hatte den Teil public void main(String[] args). die anderen nicht. mit MouseListener /actionlistener haben wir die klicks die anderen frames auf bekommen. die codes habe ich ja noch, bzw. wollte ich das jetzt auch so machen, wie wir das damals gemacht haben. aber hat nichts funktioniert, was mich verwirrt hat.
 
Die main-Methode gibt es pro Programm nur einmal, in diesem können aber beliebig viele Fenster/JFrames geöffnet werden ;).
 
Wenn du nur ein Frame willst musst du mit MainFrame.add(NamedereinzelnenJPanels); arbeiten.
Wie gesagt es wäre anzuraten erstmal Java Grundlagen zu lernen auch in Sachen GUI.

Wie willst du denn dein Spiel programmieren, wenn die Grundlagen fehlen ?

Es macht außerdem auch riesen Unterschiede, ob du mit dem Application Framework von Netbeans eine Anwendung erstellst oder komplett selber.
Copy and Paste geht bei Java mal garnicht, wenn man nicht weiß was was in Java macht.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben