java - 在 Applet On Event 中使用 PaintComponent 进行绘图

标签 java swing user-interface paintcomponent

我正在尝试创建一个小程序,它将生成与文本框中指定的数量一样多的椭圆。文本框出现,但按 Enter 键后,我的 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 On Event 中使用 PaintComponent 进行绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707942/

相关文章:

java - 无法单击复选框以取消选中它似乎已隐藏

java - GUI 从另一个类访问 JSlider

java - 无法从 JFrame 正确创建 JPanel

JAVA Swing Gui 窗口挂起

java - 弗林克 : scala version conflict?

Java:使用 OOP 构建用户控制系统

java - 用于配置 Java 属性文件的 GUI 工具

java - 将生成的文件输入回程序中

java - 用java构建游戏GUI

html - 如何使用输入文本框内联按钮/下拉列表?