2014-09-22 4 views
0

Ici, vous verrez mon code: J'essaie juste de faire une petite fenêtre qui affiche "Bonjour, Java!". Je cours actuellement sous Ubuntu 14.04. Pour aller plus en profondeur avec mon problème, l'icône avec la tasse de café apparaît quand j'exécute le programme comme s'il y avait une fenêtre, mais il n'y a pas de fenêtre attachée et si on clique dessus, aucune fenêtre ne s'ouvre.JFrame code compile et s'exécute, mais n'ouvre pas la fenêtre

Toute aide serait grandement appréciée!

public class HelloJava1 extends javax.swing.JComponent 
{ 
    public static void main(String[] args) 
    { 
     javax.swing.JFrame f = new javax.swing.JFrame("HelloJava1"); 
     f.setSize(300, 300); 
     f.getContentPane().add(new HelloJava1()); 
     f.setVisible(true); 
    } 

    public void paintComponent(java.awt.Graphics g) 
    { 
     g.drawString("Hello, Java!", 125, 95); 
    } 
} 

De plus, je suis la compilation via la ligne de commande à l'aide HelloJava1.java javac et en cours d'exécution en utilisant java HelloJava1.

J'écris le code via gedit.

+0

Essayez d'utiliser '' setLocationRelativeByPlatform' sur le JFrame' – MadProgrammer

Répondre

3

Ce code doit fonctionner de manière fiable:

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

public class HelloJava1 extends JComponent { 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      public void run() { 
       JFrame f = new JFrame("HelloJava1"); 
       // f.setSize(300, 300); better to pack() the frame 
       f.getContentPane().add(new HelloJava1()); 
       // pack should be AFTER components are added.. 
       f.pack(); 
       f.setVisible(true); 
      } 
     }; 
     // Swing GUIs should be created and updated on the EDT 
     SwingUtilities.invokeLater(r); 
    }  

    @Override // good practice.. 
    public void paintComponent(java.awt.Graphics g) { 
     // always call super method 1st! 
     super.paintComponent(g); 
     g.drawString("Hello, Java!", 125, 95); 
    } 

    // instead of setting the size of components, it is 
    // better to override the preferred size. 
    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(300,300); 
    } 
} 
+0

encore pas de dés. La fenêtre ne s'affiche pas. Peut-être qu'il y a une configuration de système d'exploitation que je dois activer/désactiver? – DrBagelBites

+0

N.B. Votre code original a fonctionné ici, ce code ci-dessus fait juste la même chose en utilisant les meilleures pratiques. Je pense que quelque chose cloche dans votre configuration Java. –

+0

Voilà ce que je pense. Je ne sais pas ce qui ne va pas. Haha! Il compile et s'exécute, juste pas de fenêtre. – DrBagelBites

Questions connexes