gpt4 book ai didi

Java - PaintComponent 不会在 JPanel 上显示绘图

转载 作者:行者123 更新时间:2023-12-02 08:24:59 24 4
gpt4 key购买 nike

我在尝试在 JPanel 上绘图时遇到了困难。我学习了如何创建 JFrameJPanel、添加事件处理程序、在小程序中执行相同操作以及其他一些基本 GUI 开发。但每次我尝试使用 paintComponent(Graphics g)paint(Graphics g) 方法在 JPanel 上绘图时,什么也没有显示。按钮以及其他 JComponent 显示得很好。但 g.drawStringg.drawRect 等会导致空白的 JFrame 窗口。

这是我的代码:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;

public class Game extends JPanel {
public static void main(String[] args) {
new Game().game();
}

JPanel panel;
JButton button2;
JButton button;

public void game() {
panel = new JPanel();
button = new JButton("Ok");
panel.setLayout(new FlowLayout());
panel.add(button);

button2 = new JButton("Cancel");

JFrame frame = new JFrame("Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setResizable(false);
frame.add(panel);

frame.setVisible(true);
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("hi",100,100);
g.fillRect(100,50,200,300)
}
}

最佳答案

您要添加到 JFrame 中的 JPanel 是一个普通的 JPanel,而不是 Game 的实例>,包含 paintComponent() 方法的自定义类。您需要将这一行更改为

JPanel panel = new Game();

您应该立即看到差异!

您在 main() 中创建的 Game 实例除了调用 game() 方法之外没有用于任何其他用途。如果您愿意,您可以通过这样做来使用它:

JPanel panel = this;

然后像以前一样继续。

关于Java - PaintComponent 不会在 JPanel 上显示绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17559377/

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