【问题标题】:JFrame vs JPanel and then JFrameJFrame vs JPanel 然后是 JFrame
【发布时间】:2012-05-13 12:23:09
【问题描述】:

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

我应该直接将椭圆添加到 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);
...

}

}

【问题讨论】:

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

标签: java swing jframe jpanel


【解决方案1】:

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

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

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

【讨论】:

  • No Ellipse 只是一个画圆的类。
  • 最好从 JPanel 扩展它。它为 Eclipse 提供了所有类似 Java Swing 可重用组件的行为。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2011-06-29
    相关资源
    最近更新 更多