Java JFrame vs JPanel,然后是JFrame

Java JFrame vs JPanel,然后是JFrame,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我有一个显示一个椭圆(Ellipse2D)的程序 我应该直接将椭圆添加到JFrame还是应该将其添加到最终添加到JFrame的JPanel?(添加JPanel需要更多的工作) 从长远来看,哪一个会帮助我?(我可能会考虑输入键) 为了让事情更清楚: 我应该做: public class Test extends JFrame{ // This is a JFrame Ellipse ellipse = new Ellipse(); // I have an ellipse class Test

我有一个显示一个椭圆(Ellipse2D)的程序

我应该直接将椭圆添加到JFrame还是应该将其添加到最终添加到JFrame的JPanel?(添加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);
...

}

}
或者我应该:

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);
...

}

}
Eclipse是否是JPanel(或扩展了一些Java Swing容器组件)。 如果没有,那么使用JPanel解决方案,它将在某种程度上被视为一个组件。如果是,则首先向JFrame添加布局管理器(可能是BorderLayout),然后将面板添加到JFrame,它可能位于中心(自行选择)

我的桌面应用程序开发方法是:


将布局管理器添加到JFrame,然后根据布局将JPanel添加到JFrame。这使得GUI更易于管理,将来更易于更新/更改。

您可能总是在
buffereImage
中绘制椭圆,将图像添加到
ImageIcon
中,并将图标添加到
JLabel

我不认为这个问题是可以简单回答的。在这种情况下,最有效的方法就是需要什么。如果您想要一个只绘制椭圆的GUI,那么将JPanel添加到JFrame中。如果要显示绘制椭圆并显示其他内容的GUI,请添加更多组件。这完全取决于您,即使您以一种方式进行操作,也不意味着您以后不会更改它或以另一种方式使用同一类。我认为在JFrame上调用
getContentPane().add(ellipse)
是可以的,但如果能更多地了解椭圆对象是什么,那就好了。没有椭圆只是一个画圆的类。最好从JPanel扩展它。它为Eclipse提供了类似于Java Swing的可重用组件的行为。