如何让paintComponent 在我的drawArea JPanel 中工作?此外,我设置 drawArea 尺寸的尝试失败了。运行后不会进行绘图,并且 JPanel 是最小尺寸。这与 MigLayout 有关系吗?
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;
public int number;
//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);
JPanel drawArea = new JPanel();
drawArea.setSize(400, 400);
drawArea.setBorder(BorderFactory.createTitledBorder("Draw Area"));
add(drawArea, "span 2");
setSize(WIDTH, HEIGHT);
}
//Event Handler
public class NumHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
number = Integer.parseInt(numberTF.getText());
repaint();
}
}
//Draw Ovals
public void paintComponent (Graphics g)
{
super.paintComponents(g);
int x = 10;
int y = 10;
int width = 200;
int height = 100;
for (int i = 0; i < number; i++)
{
g.drawOval(x, y, width, height);
x += 5;
y += 5;
width += 5;
height += 5;
}
}
}