2014-09-22 1 views
0

Здесь вы увидите мой код: Я просто пытаюсь сделать небольшое окно, которое отображает «Hello, Java!».Код JFrame компилируется и запускается, но не открывается окно

Я в настоящее время работает на Ubuntu 14.04. Чтобы углубиться в мою проблему, значок с чашкой кофе появляется, когда я запускаю программу, как будто есть окно, но нет окна, прикрепленного к нему, и если щелкнуть, окно не появится.

Любая помощь была бы высоко оценена!

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); 
    } 
} 

Кроме того, я компиляции с помощью командной строки, используя JAVAC HelloJava1.java и работает с использованием Java HelloJava1.

Я пишу код через gedit.

+0

попробуйте использовать 'setLocationRelativeByPlatform' на' JFrame' – MadProgrammer

ответ

3

Этот код должен работать надежно:

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

Еще нет костей. Окно не отображается. Может быть, есть какая-то конфигурация ОС, которую я должен включить/отключить? – DrBagelBites

+0

N.B. Ваш исходный код работал здесь, этот код выше просто делает то же самое с использованием лучших практик. Я думаю, что в вашей настройке Java что-то не так. –

+0

Вот что я думаю. Я просто не знаю, что не так. Ха-ха! Он компилируется и запускается, просто нет окна. – DrBagelBites