2014-09-14 4 views
1

Я пытаюсь отобразить простой jframe, который в конечном итоге помещу холст в рендеринг 3D-объектов. В прошлом году я построил две программы GUI, которые использовали jframe, и я посмотрел на них, и они отлично работают, но я не могу понять, почему ничего не происходит, когда я запускаю программу. Это мой код:Почему моя jframe не появится?

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

public class Hello3d extends JFrame 
{ 
    JFrame frame; 
    JLabel label; 

    public Hello3d() 
    { 
     frame = new JFrame("This is a jframe, YAAAYYYY!!!!"); 
     frame.setSize(600, 400); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.setLayout(new BorderLayout()); 
     label = new JLabel("This is where i put somthing 3d"); 
     frame.add(label); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     new Hello3d(); 
    } 
} 
+0

Это работает для меня. У вас есть какой-нибудь массаж? – Pshemo

+0

Какую команду вы используете для запуска программы? Вы используете IDE или командную строку? –

+0

проблем с компиляцией и im с использованием jcreator 4.5. также im на окнах 8 и на веб-сайте jcreator он говорит, что 4.5 предназначен только для XP и Vista, но я использовал его в Windows 7 отлично. не уверен, что это связано с проблемой, но некоторая дополнительная информация –

ответ

3

Посмотрите, подходит ли эта информация. Пожалуйста, смотрите основной метод, так как, Swing GUI или любой GUI в этом отношении, должен работать в своей собственной нити, но не main. Более того, вместо того, чтобы устанавливать размеры вручную, подумайте о вызове frame.pack(), это создаст JFrame после вычисления размеров компонентов, содержащихся в этом контейнере, в хорошем смысле.

Попробуйте использовать JFrame.DISPOSE_ON_CLOSE более, JFrame.EXIT_ON_CLOSE, так как последний очень похож на использование System.exit(0), который просто убивает приложения, хотя прежний, милостиво ждать для всех потоков демона остановиться, перед тем как JVM выключается.

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

public class HelloFrame { 
    private void displayGUI() { 
     JFrame frame = new JFrame("Hello Frame Example"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

     JPanel contentPane = new JPanel(); 
     JLabel label = new JLabel(
      "This is where I put something 3D", JLabel.CENTER); 
     contentPane.add(label); 

     frame.setContentPane(contentPane); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     Runnable runnable = new Runnable() { 
      @Override 
      public void run() { 
       new HelloFrame().displayGUI(); 
      } 
     }; 
     EventQueue.invokeLater(runnable); 
    } 
} 
+0

К сожалению, это не решило проблему, я начал думать, что что-то не так с моей IDE, потому что она по-прежнему ничего не отображает :(или что-то не так с моим проектом. –

+0

@MatthewBuchanan: Попробуйте запустить в командной строке/терминале, возможно, это даст вам некоторую идею. Или проверьте «Журнал ошибок» IDE, должно быть что-то скрытое в этом окне, которое может ускользнуть от вас. –

+0

Я не знаю, как, но я получил его на работу. Большое спасибо за вашу помощь. это важно или нет, я узнал в этом процессе :). –

Смежные вопросы