2013-02-08 3 views
-2

Hé les gars J'écris un programme Java pour la pratique. Il implique un JFrame, JButton et un écouteur d'action. Lorsque j'essaie de lancer le programme (via eclipse), la console indique "Window (5) [Java Application]" [...]Le programme se termine, et JFrame n'apparaît pas

Est-ce que quelqu'un connaît un correctif? Voici mon code:

Window.java

package com.github.dtroll.Carzett.main; 

import java.awt.Color; 

import javax.swing.JFrame; 

public class Window { 
public static void startGame() { 
    JFrame f = new JFrame("Journey To Carzett"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setResizable(true); 
    f.setBackground(Color.GRAY); 
    f.setVisible(true); 
    f.setSize(750, 500); 
    //JPanel p = new JPanel(new BorderLayout()); 
} 
public static void main(String args[]) { 

    new Window(); 
      new StartPanel(); 
} 


} 

StartPanel.java (ceci est utilisé pour ajouter un panneau au programme lorsque le bouton est pressé.)

package com.github.dtroll.Carzett.main; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JPanel; 
public class StartPanel extends JPanel implements ActionListener{ 


/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
private JButton start; 

public StartPanel(){ 
    Icon startButton = new ImageIcon("/images/buttons/start.png"); 
    this.start = new JButton(startButton); 
    this.start.addActionListener(this); 
    this.add(start); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    if(e.getSource() == start){ 
     //insert methods here 
    } 


} 
} 
+1

quel est le message d'erreur? –

+0

Note de côté 'if (e.getSource() == start) {' devrait être 'if (e.getSource(). Est égal à (début)) {' – Smit

+0

non ne fonctionne pas. –

Répondre

0

où vous appelez le startgame(). Si vous ne l'appelez pas, le cadre n'apparaîtra pas. pour voir le cadre juste ajouter ceci principal:

startGame() 
+0

Ok, la fenêtre apparaît, mais je ne vois pas le bouton. une idée? –

+0

@DtrollMC il semble que vous n'ajoutez pas votre jpanel à jframe. – Smit

+0

problème est votre panneau et les cadres sont différents. vous avez ajouté des choses dans jpanal mais ne l'avez pas ajouté dans jframe. – Arpit

4

On dirait que vous n'êtes pas vraiment connecter le JPanel et JFrame. Fondamentalement, vous devez ajouter le JPanel au JFrame, puis «pack» le JFrame et le définir pour être visible. Essayez ceci:

public static void main(String args[]) { 

    Window frame = new Window(); 
    frame.startGame(new StartPanel()); 

} 

Et votre code de fenêtre devrait ressembler à ceci:

public static void startGame(JPanel panel) { 
    JFrame f = new JFrame("Journey To Carzett"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setResizable(true); 
    f.setBackground(Color.GRAY); 
    f.setVisible(true); 
    f.setSize(750, 500); 
    f.getContentPane(panel); 
    f.pack(); 
    f.setVisible(true); 
} 
+0

D'accord. Encore une chose. Im obtenir une erreur et un plantage: ** Exception dans le fil "principal" java.lang.Error: problème de compilation non résolu: \t La méthode startGame() dans le type Window n'est pas applicable pour les arguments (StartPanel) \t at com .github.dtroll.Carzett.main.Window.main (Window.java:21) ** –

+0

Hey MC, vous devriez ajouter le "panneau JPanel" en tant qu'argument à la méthode startGame, cela devrait résoudre le problème. – Joe

Questions connexes