按下按钮后更改彩色正方形的大小

时间:2018-10-23 12:17:45

标签: java user-interface

我已经编写了这段代码,但是我想在其中编写代码时遇到了麻烦。当我按下三个按钮之一时,我想使绿色方块改变尺寸,所以当我按下``小''按钮时,方块将改变大小,例如100,当我按下按钮“中”时,它会将尺寸更改为中,例如400.到目前为止,这是我的代码:

package Lab2;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;


public class Main {

    public static void main(String[] args) {

        FilledFrame frame = new FilledFrame();

        frame.setVisible( true );

    }
}

class FilledFrame extends JFrame {

    int size = 400;

    public FilledFrame()
    {

        JButton butSmall = new JButton("Small");
        JButton butMedium = new JButton("Medium");
        JButton butLarge = new JButton("Large");
        JButton butMessage = new JButton("Say Hi");

        SquarePanel panel = new SquarePanel(this);
        JPanel butPanel = new JPanel();

        butPanel.add(butSmall);
        butPanel.add(butMedium);
        butPanel.add(butLarge);
        butPanel.add(butMessage);
        add(butPanel, BorderLayout.NORTH);
        add(panel, BorderLayout.CENTER);

        setSize( size+100, size+100 ); } }

    class SquarePanel extends JPanel {
    FilledFrame theApp;

    SquarePanel(FilledFrame app)
    {
        theApp = app;
    }

    public void paintComponent ( Graphics g)
    {
        super.paintComponent(g);
        g.setColor(Color.green);
        g.fillRect(20, 20, theApp.size, theApp.size);
    }
}

class buttonHandler implements ActionListener {
FilledFrame theApp;
int size;

public buttonHandler(FilledFrame app, int size) {

    theApp = app;
    this.size = size;

}


    @Override
    public void actionPerformed (ActionEvent e){
    theApp.setSize(this.size, this.size);

    }
}

1 个答案:

答案 0 :(得分:0)

由于我没有看到按钮的任何事件侦听器,因此我假设这就是您拥有的所有代码。您的按钮不会执行任何操作,除非您告诉他们执行此操作。您需要添加事件侦听器,然后更改大小并更新面板。

示例:

    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            theApp.size = 200;
            frame.getContentPane().repaint();
            //OR frame.repaint();
        }
    });

编辑: 使用按钮处理程序类的问题是,您需要找到按下了哪个按钮,而不是使用上面显示的方法更容易。我在上面的代码中进行了编辑,请尝试将粘贴复制到按钮之一。