我的代码有什么问题,我必须按两次按钮才能显示三角形

时间:2017-08-11 16:37:37

标签: java swing graphics jframe

在这里学习基础知识。 我只想知道如何安排代码,使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);
    }

}

0 个答案:

没有答案