2014-12-08 2 views
-1

Я пытался заставить его работать, не хватает ли кода, чтобы он мог показывать gui на окнах, или мне нужна какая-то Java для его запуска?Как запустить программу Java?

Вот мой код:

package math; 

import java.awt.EventQueue; 
import javax.swing.JFrame; 

public class Main { 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        JFrame window = new JFrame(); 
        window.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 
+0

экспортом сделать вы имеете в виду упаковку в банку? если это так, и двойной щелчок на банке не открывает окно, попробуйте «java -jar MyJar.jar» в командной строке, чтобы получить сообщения об ошибках, которые могут произойти – EyeSpy

+0

Вы говорите, что США являются конкретными? –

ответ

0

Ваш код компилируется и работает нормально. (Хотя более целесообразно поместить команду setVisible в метод initialize).

Похоже, что вы не смогли его правильно экспортировать. Я экспортировал ваш код в NetBenas, и я мог бы запустить его, дважды щелкнув по нему. Попробуйте экспортировать свой класс с помощью NetBenas (это упрощает).

Если у вас нет NetBeans и создание файла jar через командную строку, проверьте файл манифеста. Убедитесь, что вы указали правильное имя основного метода.

0

Главное окно часть не имеет смысла

заменить ваш примерки блок

try { 
      Main window = new Main(); 
      window.frame.setVisible(true); 
     } 

с

try { 
      initialize(); 
      frame.setVisible(true); 
     } 
+1

window.frame.setVisible (true); Он сделал это видимым, просто не там, где вы обычно это делаете: D – EyeSpy

+0

Я понял это позже: P –

0

вы необходимо установить видимость вашего кадра в конструкторе.

private void initialize() { 
    frame = new JFrame(); 
    frame.setVisible(true); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
0

Код выше отлично работает. Может быть, это сработало для вас, но вы не понимали, потому что созданное окно очень мало. Возможно также, что вы пытались экспортировать его в файл .jar, но не указали в манифесте, что должно быть Main-Class. В зависимости от используемого средства IDE или сборки, способ может отличаться. Также может быть, что вы просто еще не знаете, как заставить этот код работать вообще, т. Е. Компилировать и запускать Java-код. В этом случае вам нужно узнать о javac и java, которые включены в Java SDK.

Если вы используете Java 8, вы действительно можете упростить код. Вам не нужен обработчик исключений, который печатает трассировку стека, EventQueue уже делает это для вас.

package math; 

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

public class Main { 
    public static void main(String[] args) { 
     EventQueue.invokeLater(() -> { 
      JFrame window = new JFrame(); 
      window.setVisible(true); 
     }); 
    } 
} 

или, если код в отдельный метод:

package math; 

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

public class Main { 
    public static void main(String[] args) { 
     EventQueue.invokeLater(Main::initUI); 
    } 

    private static void initUI() { 
     JFrame window = new JFrame(); 
     window.setVisible(true); 
    } 
} 

Если initUI() должен быть метод экземпляра, вы могли бы сделать это следующим образом:

package math; 

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

public class Main { 
    public static void main(String[] args) { 
     new Main(); 
    } 

    Main() { 
     EventQueue.invokeLater(this::initUI); 
    } 

    private void initUI() { 
     JFrame window = new JFrame(); 
     window.setVisible(true); 
    } 
} 
Смежные вопросы