2016-10-16 2 views
1

При запуске проекта Java появляется на моей док-станции, но не запускается вообще. Он остается там около 5-10 секунд и исчезает. Что-то не так с кодом или с моим Mac?JFrame не работает на Mac

import javax.swing.JFrame; 

public class Test extends JFrame { 

    public Test() { 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setSize(600,600); 
     this.setVisible(true); 
     this.setResizable(false); 
     this.setTitle("Test"); 
    } 
+1

Где моя 'главная' функция? Или где вы делаете 'new Test()'? –

+0

Это то, что мне было нужно, было совершенно не осознано. Благодаря! – KingF

ответ

1

Это не имеет никакого отношения к тому, чтобы быть на Mac.

Добавьте это в свою основную функцию (которая может быть в Test.java или в любом другом классе), чтобы создать поток GUI и создать экземпляр класса TestJFrame.

public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      new Test(); 
     } 
    }); 
} 

Вызов new Test(); это все, что вам нужно сделать, однако делать это внутри javax.swing.SwingUtilities.invokeLater очень важно для будущего приложения, как это позволяет делать другие вещи в фоновом режиме и в то же время, что позволит удалить любая видимая латентность. This is what Java itself recommends to do.

Вам необходимо будет import javax.swing.SwingUtilities; или просто сделать import javax.swing.*;.

-1

Вам нужно позвонить куда-нибудь экземпляр теста для работы ..

public class Test extends JFrame { 

    private static final long serialVersionUID = -2949102464273156555L; 

    public Test() { 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setSize(600, 600); 
    this.setVisible(true); 
    this.setResizable(false); 
    this.setTitle("Test"); 
    } 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new Test(); 
      } 
     }); 
     } 
    } 
+0

Спасибо! Но что такое – KingF

+0

частный статический окончательный длинный serialVersionUID = -2949102464273156555L; для? – KingF

+0

JFrame является сериализуемым объектом, поэтому рекомендуется применять класс serialVersionUID, ... –

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