java - 如何在JComponent中绘制JComponent?

标签 java swing jpanel jbutton jcomponent

我对 JComponent 有一个奇怪的问题。我正在尝试创建自己的 JComponent,因此我需要将 JComponent 组合在一起。

我想在我的 JComponent JDial 中绘制 JButton:

public class JDial extends JComponent {
    private static final long serialVersionUID = 3364481508702147328L;

    public JDial() {        
        JButton b = new JButton("test");
        this.add(b);
    }
}   

但是那什么也没有画。更有趣的是,这个效果很好:

public class JDial extends JPanel {
    private static final long serialVersionUID = 3364481508702147328L;

    public JDial() {        
        JButton b = new JButton("test");
        this.add(b);
    }
}

JPanel继承自JComponent,在内部绘制JButton。 JPanel 是如何做到这一点的?

提前致谢

最佳答案

通常,当您想通过覆盖 paintComponent() 方法进行自定义绘画时,您会扩展 JComponent。

如果您只想添加一堆组件,那么您应该使用 JPanel。

两者之间的区别在于,默认情况下 JPanel 使用 FlowLayout,因此它知道如何布局添加到它的任何组件。要使 JComponent 像 JPanel 一样,您需要设置布局管理器并添加自定义绘画来绘制背景。

关于java - 如何在JComponent中绘制JComponent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15591872/

相关文章:

java - 图像图标不显示

Java GUI - 删除所有组件并重绘

java - JPanel 上的 paintComponent 不工作

java - 资源包 Spring

java - 非泛型类中的泛型方法

java - JTable 数据滚动后才显示?

java - 当未在java swing表单中选择日期时,显示mysql数据库表中的所有记录

java - 如何针对这种情况配置HttpSecurity(Spring Boot)

java - 如何在 Spring MVC 中创建主 Controller

框架上具有多个面板的 Java Swing 可滚动 JPanel