2013-06-12 2 views
1

Я потянув меня за волосы, пытаясь выяснить, почему следующее не работает в некоторых случаях:JFrame не загружаются все компоненты, если не создан основной метод внутри класса

public static void main(String[] str) { 
    new Window(new DatabaseManager()); 
} 

Я бегу этот точный код два класса, с двумя разными результатами. Когда я запускаю его с самого класса Window, он отлично работает. Когда я запускаю его из другого класса, он не загружает все мои компоненты окна.

Это проблема, связанная с памятью? Я попытался присвоить объекту Window имя переменной, но безрезультатно. Я более чем рад объяснить, если понадобится.

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

EDIT Есть в любом случае я могу дать EDT больше времени для обработки запросов? EDIT2 Хорошо, так что я сделал, я решил сделать все в классе Window (я сделал основной метод там), так как он отлично работает. Мне еще многое предстоит узнать о Threads, для которых я недостаточно подготовлен. Все хорошо сейчас:)

+0

Are оба класса в одном пакете? Из вашего вопроса неясно, загружается ли что-либо вообще * при запуске из другого класса. –

+0

Они не в одном пакете, но Window находится в более глубоком пакете «GUI». Пример: X.main, X.GUI.window – Wulf

+1

Существует «стандартный» класс 'Window':' java.awt.Window'. Вы импортируете 'java.awt. *' В свой код? [http://docs.oracle.com/javase/7/docs/api/java/awt/Window.html] –

ответ

3

Попробуйте следующее внутри основного метода (событие диспетчерской нить + SetVisible)

Runnable doHelloWorld = new Runnable() { 
    public void run() { 
     Window w = new Window(new DatabaseManager()); 
     w.pack(); 
     w.setVisible(true); 
    } 
}; 

SwingUtilities.invokeLater(doHelloWorld); 
+0

Если вышеприведенный отказ подтвердит, что у вас нет проблем с импортом или проблемы с потоками при добавлении других компонентов/изображений (EDT -> поток диспетчеризации событий) – rimero

+0

Выше неудачно. И EDT? Я использую ImageIcon (новый URL (String url)) в основном для загрузки изображений. Я тоже пользователь изображение.IO иногда. – Wulf

+0

См. Эту ссылку для EDT http://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html – rimero

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

  • Нет связанных вопросов^_^