2012-05-03 3 views
0

У меня есть программа, которая отображает один эллипс (Ellipse2D).JFrame vs JPanel, а затем JFrame

Должен ли я непосредственно добавлять эллипс в JFrame или добавить его в JPanel, который в конечном итоге добавляется в JFrame? (Добавление JPanel - больше работы)

Какой из них мне поможет в долгосрочной перспективе? (Я мог бы рассмотреть вопрос о создании комбинаций клавиш.)

Для того, чтобы прояснить ситуацию:

Должен ли я сделать:

public class Test extends JFrame{ // This is a JFrame 

Ellipse ellipse = new Ellipse(); // I have an ellipse class 

Test(){ 

... 
add(ellipse); 
... 

} 

} 

Или я должен делать:

public class Test extends JFrame{ 

Test2 test2 = new Test2(); 

Test(){ 
... 
add(test2) 
... 
} 
} 

public class Test2 extends JPanel{ // This is a JPanel 

Ellipse ellipse = new Ellipse(); // I have an ellipse class 

Test2(){ 

... 
add(ellipse); 
... 

} 

} 
+0

Я не рассматриваю этот вопрос как просто подотчетный. Лучше всего то, что нужно в этой ситуации. Если вы хотите, чтобы графический интерфейс рисовал эллипс, добавьте JPanel в JFrame. Если вы хотите отобразить графический интерфейс, который рисует эллипс и отображает что-то еще, добавьте еще несколько компонентов. Все зависит от вас, и даже если вы это сделаете, это не означает, что вы не измените его позже или не воспользуетесь тем же классом другим способом позже. –

+0

Я думаю, что 'getContentPane(). Add (ellipse)', вызываемый в JFrame, прекрасен, но было бы неплохо узнать больше о том, что такое объект эллипса. – richard

ответ

1

Является затмении JPanel (или расширяет некоторые компоненты контейнера Java Swing) или нет. Если нет, то перейдите к решению JPanel, оно будет рассматриваться как компонент. Если вначале добавить менеджера компоновки (возможно, BorderLayout) в JFrame, а затем добавить панель, то он может быть в CENTER (сделайте свой выбор).

Мой подход для разработки настольных приложений было в:

Добавить менеджер компоновки в JFrame затем добавить JPanels в JFrame на основе макета. Это делает GUI более управляемым и легким для обновления/изменения в будущем.

+0

No Ellipse - это просто класс, который рисует круг. – Anonymous181

+0

Лучше расширить его от JPanel. Это дает Eclipse все повторяющиеся Java-компоненты Swing, такие как поведение. –

1

Вы можете всегда просто нарисовать эллипс (ы) в BufferedImage, добавить изображение в ImageIcon и добавить значок в JLabel.