gpt4 book ai didi

java - 显示 JComponent 对象 - Java

转载 作者:行者123 更新时间:2023-11-30 04:04:43 26 4
gpt4 key购买 nike

在我使用 Java 和 Swing 的第一天中,我遇到了一个我不明白的问题。下面是我的代码。

导入javax.swing.*;

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);
}
}

我不明白我的第二个类(class)“世界”的 Action 。我预计我会同时得到 String1 和 String2,但在我的窗口上我只能看到 String2。原因是什么?

最佳答案

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

paint()方法中还有其他一些你不应该搞乱的东西,所以通常最好只重写paintComponent()。

关于java - 显示 JComponent 对象 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com