java - 矩形颜色选择器程序

标签 java swing jbutton jcolorchooser

我这里遇到两个问题。我正在制作一个简单的程序来测试,基本上当您单击按钮 JColorChooser 时,将会弹出,您可以选择您想要的矩形的颜色。第二个问题是我无法将按钮放置在 BorderLayout.SOUTHBorderLayout.NORTH 或任何地方。这些是我的代码

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

public class GUI extends JPanel {
    private Color a = (Color.WHITE);
    private Color b = (Color.WHITE);
    private final JPanel panel;
    private final JButton ab;
    private final JButton bb;
    private int x = 1;
    private int y = 1;

    public GUI() {
        panel = new JPanel();
        panel.setBackground(Color.WHITE);

        ab = new JButton("Choose your first Rectangle color");
        ab.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                a = JColorChooser.showDialog(null, "Pick a Color", a);
                x = 2;
            }
        });
        bb = new JButton("Choose your second Rectangle color");
        bb.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                b = JColorChooser.showDialog(null, "Pick a Color", b);
                y = 2;
            }
        });
        add(ab, BorderLayout.NORTH);
        add(panel, BorderLayout.CENTER);
        add(bb, BorderLayout.SOUTH);

    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        this.setBackground(Color.WHITE);
        if (x == 2)
            g.setColor(a);
        g.fillRect(50, 50, 100, 20);
        if (y == 2)
            g.setColor(b);
        g.fillRect(50, 200, 100, 20);
    }
}

最佳答案

And the second problem is i cannot position my buttons at BorderLayout.SOUTH or BorderLayout.NORTH Or anywhere.

JPanel 默认使用 FlowLayout,在添加任何组件之前尝试添加 setLayout(new BorderLayout())

setLayout(new BorderLayout());
add(ab, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
add(bb, BorderLayout.SOUTH);

I'm making a simple program to test, basically when you click the button jcolorchooser will pop up and you can choose what color you want your rectangle to be

好吧,我“猜测”一旦你选择了一种颜色,它就不会改变矩形的颜色。

更改颜色后,只需添加对 repaint 的调用即可

ab.addActionListener(
    new ActionListener() {
        public void actionPerformed(ActionEvent event) {
            a = JColorChooser.showDialog(null, "Pick a Color", a);
            x = 2;
            repaint();
        }
    }
);
bb = new JButton("Choose your second Rectangle color");
bb.addActionListener(
    new ActionListener() {
        public void actionPerformed(ActionEvent event) {
            b = JColorChooser.showDialog(null, "Pick a Color", b);
            y = 2;
            repaint();
        }
    }
);

关于java - 矩形颜色选择器程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31201696/

相关文章:

Java 调用同级类上的方法

java - 如何在 Netbeans 中使用 LGoodDatePicker 插件

java - java 运行时环境检测到 fatal error ...无法理解为什么?

java - 加载下一个图像后刷新 JPanel

java - 如何开始,使用几个面板开发基于 swing 的应用程序,每个面板都有下一个按钮

java - Dropwizard - 部署时,应用程序由于 yml 文件格式错误而无法运行

java - 如何使用具有特定id的Spring Data Neo4j存储库保存方法?

java - 带按钮的小程序中的页面转换

java - 需要添加 “public static void main(String[] args)”,

java - 使用 Jaxb2 解码复杂类型