gpt4 book ai didi

java - 事件发生时在 Applet 中使用paintComponent 进行绘制

转载 作者:行者123 更新时间:2023-12-04 05:20:53 25 4
gpt4 key购买 nike

我正在尝试创建一个小程序,它会产生与文本框中指定的数字一样多的椭圆。文本框出现,但按下回车键后,我的paintComponent 不会绘制。提前谢谢你。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.miginfocom.layout.*;
import net.miginfocom.swing.MigLayout;
import java.awt.geom.*;

public class OvalDrawer extends JApplet
{
private JLabel numberL;
private JTextField numberTF;

private NumHandler numHandler;

public static final int WIDTH = 500;
public static final int HEIGHT = 500;

//Create Layout
public void init()
{
setLayout(new MigLayout("wrap 2"));
numberL = new JLabel("Enter number of ovals to draw:");
numberTF = new JTextField(7);

add(numberL);
add(numberTF);

numHandler = new NumHandler();
numberTF.addActionListener(numHandler);

setSize(500, 500);
}

//Event Handler
public class NumHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
repaint();
}

}

//Draw Ovals
public void paintComponent (Graphics g)
{
super.paintComponents(g);
int number;
int x = 10;
int y = 30;
int width = 20;
int height = 10;

number = Integer.parseInt(numberTF.getText());

for (int i = 0; i < number; i++)
{
g.drawOval(x, y, width, height);

x += 5;
y += 5;
width += 5;
height += 5;
}
}
}

最佳答案

JApplet 类没有要覆盖的paintComponent 方法。请注意,您的编译器不会让您调用实际的 super 方法(您认为您可能正在这样做,但实际上您正在调用 super.paintComponents(...) ,这是一种完全不同的方法)。

一个糟糕的解决方案是覆盖 JApplet 的绘制方法,但我强烈建议您不要这样做。相反,您应该在 JPanel 的 paintComponent 方法中绘制,然后让 JApplet 显示该 JPanel。此外,您还需要养成使用 @Override 的习惯。注释以确保您实际上覆盖了您认为的方法。

关于java - 事件发生时在 Applet 中使用paintComponent 进行绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707942/

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