当前位置: 首页 > 面试题库 >

如何在自定义JComponent中使后台工作?

卫烨烁
2023-03-14
问题内容

在下面的示例中,我JComponent在绿色背景上绘制了一个自定义,但是它没有出现。为什么会这样?

public class Test_Background {

    public static class JEllipse extends JComponent {

        private final Ellipse2D ellipse;

        public JEllipse(int width, int height) {
            ellipse = new Ellipse2D.Double(0, 0, width, height);

            setOpaque(true);
            setBackground(Color.GREEN);
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension((int) ellipse.getBounds().getMaxX(),
                                 (int) ellipse.getBounds().getMaxY());
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);

            ((Graphics2D) g).draw(ellipse);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                JEllipse e = new JEllipse(400, 300);

                JFrame f = new JFrame("Background Test");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.add(e);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

问题答案:

JComponent不会绘制其背景。您可以自己绘制,也可以使用可以绘制背景的JPanel



 类似资料:
  • 自定义后台iconfont CMS采用了http://www.iconfont.cn/上提供的iconfont,可以现在该网站生成iconfont字体后替换 /statics/css/default_iconfont.css内容

  • 问题内容: 在我的数据库中,我可以说有5000多个用户,现在,如果我在主父节点中使用来获得多少人, 我知道getChildrenCount会返回一个带有父级内部子级数量的long,但这会如何影响性能? 几个月前,我制作了一个应用程序来管理用户,该应用程序比通过Web控制台更有效地管理用户,因为页面变得静态并且用户不断增长。 现在,我想知道是否每当我请求用户数量时,该应用程序就会循环遍历5000+个

  • 我已经学会了使用NotifyDescriptor创建弹出对话框。我设计了一个带有两个大按钮的JPanel,分别为和,我使用的代码在底部显示了另一个按钮,分别为和。我不希望NotifyDescriptor在屏幕上放置自己的按钮。我只想让我的按钮在那里,当单击某个自定义按钮时,弹出窗口将关闭并存储值。(就像单击或时关闭窗口一样)。我正在使用的代码如下

  • 如果我创建一个继承JComponent的新类,我重写了JComponent的绘图Component(Graphics g)方法,通过使用g绘制一个圆圈,我应该修改什么才能使MouseListener仅在我单击组件的边界内时触发? 因为我在组件的构造函数中添加了setBounds(…)然后添加了一个MouseListener,但它会在我每次单击自定义组件所在容器中的任何位置时触发,而不仅仅是在我单击

  • 管理窗口和面板 您可以通过移动和处理“文档”窗口和面板来创建自定义工作区。您也可以保存工作区并在它们之间进行切换。 重新排列、停放或浮动“文档”窗口 打开多个文件时,“文档”窗口将以选项卡方式显示。 要重新排列选项卡式“文档”窗口,请将某个窗口的选项卡拖动到组中的新位置。 要从窗口组中取消停放(浮动或取消显示)某个“文档”窗口,请将该窗口的选项卡从组中拖出。 要将某个“文档”窗口停放在单独的“文档