我对 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/