2013-08-12 3 views
1

Я использую платформу идей Intelij.JFrame не отображается

У меня есть следующий код:

package GUI.test; 

import javax.swing.*; 

public class Frame extends JFrame{ 

     Frame(){} 

public void main (String[] args){ 

    new Frame(); 
} 

} 

Я ожидал увидеть JFrame после компиляции этого кода, но ничего не появилось. Какая проблема может быть?

+3

Прочитайте это основное руководство по созданию фрейма: http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html –

+0

Не используйте «Frame» в качестве имен классов. Это компонент AWT, поэтому может быть немного запутанным использование этого имени. Имя класса должно быть более наглядным. – camickr

ответ

2

Вы можете добавить этот

Frame() 
    { 
    setVisible(true); 
    setSize(100,100); 
    } 
2

Рамки не отображаются по умолчанию - использовать метод

setVisible(true); 

для отображения кадров. Вы также можете захотеть взглянуть на другие варианты, такие как

setSize(int width, int height); 

метод, чтобы изменить размер кадра,

setLocation(int xLoc, int yLoc); 

, чтобы переместить рамку, и

setTitle(String title); 

, чтобы установить название компонента.

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

+0

спасибо, проблема была в отсутствующем статическом перед основным методом :-) – ISilchev

+0

Oh * facepalm как мы все пропустили это. Рад работать! –

1
package GUI.test; 

import javax.swing.*; 

public class Frame extends JFrame{ 
private myFrame; 

public Frame() 
{ 
myFrame = new JFrame("put a title here"); //title not necessary but it's there if you want it 
myFrame.setSize(400,400); // sets the window size 
myFrame.setVisible(true); // toggles the frame to be visible inside the window 
myFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // this will terminate the VM once the *last* JFrame is closed, so you can have multiple frames open and just close one 
} 

public void main (String[] args){ 

    new Frame(); 
} 

} 
+0

также обратите внимание, что java API уже имеет класс под названием «Frame», поэтому лучше переименовать свой класс в нечто иное, чем Frame. –

0

Большое спасибо за ответ. Я написал пример без подробностей. Я добавил: setVisible (true); setSize (100,100);

к конструктору класса. Но я не видел, как струи.

Следует сказать об одной функции. Я не запускаю метод main в классе Frame, я компилирую этот класс Frame. В моих предыдущих упражнениях с java i allways запускают основной метод, но когда я пытался работать с формой GUI и использовал swing-библиотеку, способность запускать main метода была dissapiared.

Если вы не указали, что я имею в виду, я бы отправил скриншот.

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