如何制作按钮以使颜色正方形?

时间:2016-11-18 11:46:14

标签: java swing background jbutton actionlistener

编写一个显示带三个按钮的窗口的程序。每个按钮的名称都是“红色”,“绿色”和“蓝色”。在这个窗口中,还有一个标签。标签包含一个图标。此图标必须是CompositeIcon,其中开头为空。每次按下按钮,您都可以看到一个带有按钮颜色的正方形,例如“按下蓝色按钮 - >窗口上出现一个蓝色方块“。 到目前为止,我有这个。我有三个带有颜色名称的按钮。我每次按下其中一个按钮都不起作用。我需要做什么?

代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ActionTester{

    public static void main(String[] args){
            JFrame frame = new JFrame();
            final JTextField textField = new JTextField();

            JButton RedButton = new JButton("Red");

            RedButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                            SquareIcon red = new SquareIcon(20,Color.RED);
                            CompositeIcon ci = new CompositeIcon();
                            ci.addIcon(red);
                    }
            });

            JButton GreenButton = new JButton("Green");

            GreenButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                            SquareIcon green = new SquareIcon(20,Color.GREEN);
                            CompositeIcon ci = new CompositeIcon();
                            ci.addIcon(green);
                    }
            });

            JButton BlueButton = new JButton("Blue");

            BlueButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                            SquareIcon blue = new SquareIcon(20,Color.BLUE);
                            CompositeIcon ci = new CompositeIcon();
                            ci.addIcon(blue);
                    }
            });

            frame.setLayout(new FlowLayout());
            frame.add(RedButton);
            frame.add(GreenButton);
            frame.add(BlueButton);
            frame.add(textField);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:2)

您需要做的就是创建一个您在ActionListener中更改的方形对象:

final JPanel sqr = new JPanel();

JButton RedButton = new JButton("Red");

RedButton.addActionListener(new ActionListener()
{
  @Override
  public void actionPerformed(ActionEvent e)
  {
    sqr.setBackground(Color.RED);
  }
});

并且不要忘记将sqr添加到框架

另外请注意,请避免使用

等导入
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

在我的项目中,它归结为

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

某些IDE可以自动对您进行排序,因此您不再需要为最常见的导入而烦恼

答案 1 :(得分:1)

按钮本身可以使用,但您永远不会将redirect_to添加到您的框架中。因此没有显示任何内容