在这里学习基础知识。 我只想知道如何安排代码,使paint方法在程序开始时运行,而不是在单击按钮时运行。 还是我忘了重要的事情? 我知道当你将可见性设置为true时会自动调用paint方法,但除此之外,我不确定。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Triangle extends JFrame implements ActionListener
{
private JButton b1 = new JButton ("Blue");
private JButton b2 = new JButton ("Red");
private boolean color = true;
public Triangle()
{
setLayout(new FlowLayout());
add(b1);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
setTitle("Triangle");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,400);
setLocation(300,300);
setVisible(true);
}
public void paint(Graphics g)
{
if(color == true)
{
super.paint(g);
g.setColor(Color.white);
g.drawLine(100, 70, 100, 250);
g.drawLine(100, 250, 400, 250);
g.drawLine(100,70,400,250);
getContentPane().setBackground(Color.red);
}
else
{
super.paint(g);
g.setColor(Color.white);
g.drawLine(100, 70, 100, 250);
g.drawLine(100, 250, 400, 250);
g.drawLine(100,70,400,250);
getContentPane().setBackground(Color.BLUE);
}
}
public void actionPerformed(ActionEvent a)
{
if(a.getSource() == b2)
{
color = true;
repaint();
}
else
{
color = false;
repaint();
}
}
}
我的绘画方法最初是这样的
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.white);
g.drawLine(100, 70, 100, 250);
g.drawLine(100, 250, 400, 250);
g.drawLine(100,70,400,250);
if(color == true)
{
getContentPane().setBackground(Color.red);
}
else
{
getContentPane().setBackground(Color.BLUE);
}
}