【问题标题】:Rectangle Color Chooser program矩形颜色选择器程序
【发布时间】:2015-09-20 23:50:57
【问题描述】:

我在这里遇到了两个问题。我正在制作一个简单的程序来测试,基本上当你点击按钮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);
    }
}

【问题讨论】:

    标签: java swing jbutton jcolorchooser


    【解决方案1】:

    第二个问题是我无法将按钮定位在 BorderLayout.SOUTHBorderLayout.NORTH 或任何地方。

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

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

    我正在做一个简单的程序来测试,基本上当你点击按钮时 jcolorchooser 会弹出,你可以选择你想要的矩形是什么颜色

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

    更改颜色后,只需添加对 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();
            }
        }
    );
    

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 2012-04-09
      • 2010-10-05
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多