drawArea JPanel内でpaintComponentを機能させるにはどうすればよいですか?さらに、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;
}
}
}