首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示JComponent对象- Java

显示JComponent对象- Java
EN

Stack Overflow用户
提问于 2014-01-10 07:32:53
回答 1查看 40关注 0票数 1

在我使用Java和Swing的最初几天里,我遇到了一个我不理解的问题。下面是我的代码。

导入javax.swing.*;

代码语言:javascript
复制
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.SystemColor;
import java.awt.Toolkit;

public class MyFrame 
{
    public static void main(String [] args)
    {
         EventQueue.invokeLater(new Runnable() 
         {
                @Override
                public void run()
                {
                    Frame f = new Frame();
                    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                }
          });

    }
}

class Frame extends JFrame{
    Frame()
    {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension size = kit.getScreenSize();
        int screenwidth = size.width/4;
        int screenheight= size.height/4;
        setSize(screenwidth,screenheight);
        setLocationByPlatform(true);

        World panel = new World();
        panel.setForeground(Color.BLUE);
        add(panel);


        setVisible(true);

    }
}

class World extends JComponent{
    public void paintComponent(Graphics g)
    {
        g.drawString("String1", 70,70);

    }

    public void paint(Graphics c)
    {
        Font font = new Font("Arial",Font.BOLD,16);
        c.setFont(font);
        c.drawString("String2", 30, 40);
    }
}

我不理解我的第二个类World的动作。我希望我同时得到String1和String2,但是在我的窗口上我只能看到String2。原因何在?

EN

回答 1

Stack Overflow用户

发布于 2014-01-10 07:35:47

可能是因为父类的paint()方法通常调用paintComponent()方法。由于您覆盖了paint()方法并且没有调用super.paint(),因此它不再到达调用paintComponent()的代码。

paint()方法中还有一些您不应该做的事情,所以通常只覆盖paintComponent()是个好主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21033424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档