【问题标题】:Setting Listener to JColorChooser将侦听器设置为 JColorChooser
【发布时间】:2014-10-10 14:24:41
【问题描述】:

当我从 JColorChooser 中选择颜色时,我想做一些工作。 按确定按钮后不会

例如:当我按下红色时,我想显示一条消息说“你选择了红色”。 我真正想要实现的是向用户呈现某种预览。

问题:如何在 JColorChooser 按下颜色时设置 Listener?

【问题讨论】:

标签: java swing colors jcolorchooser


【解决方案1】:

“如何在 JColorChooser 按下颜色时设置监听器”

如有疑问,请参阅the tutorial。它指出:

颜色选择器使用ColorSelectionModel 的实例来包含和管理当前选择。每当用户更改颜色选择器中的颜色时,颜色选择模型都会触发更改事件。

教程中的示例代码

tcc.getSelectionModel().addChangeListener(this);
. . .
public void stateChanged(ChangeEvent e) {
    Color newColor = tcc.getColor();
    banner.setForeground(newColor);
}

更新

颜色选择器教程有一个 ColorChooserDemo 程序,应该很容易理解,但这里有一个更简单的程序,应该更容易理解。

import java.awt.Color;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class DemoColorChooser {

    public static void main(String[] args) {
        final JColorChooser chooser = new JColorChooser();
        chooser.setColor(Color.BLUE);
        chooser.getSelectionModel().addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent arg0) {
                Color color = chooser.getColor();
                System.out.println(color);
            }
        });
        JDialog dialog = JColorChooser.createDialog(null, "Color Chooser",
                true, chooser, null, null);
        dialog.setVisible(true);
        System.exit(0);
    }
}

您应该记住,JColorChooser 只是一个普通组件,它不是一个对话框窗口。看起来可能是这样,因为您可能习惯于使用JColorChooser.showDialog(),它会自动将其包装在对话框中。但正如您在上面的代码中看到的那样,我自己包装它。知道这一点后,您就可以将其他查看组件添加到对话框中,正如您所说的“想要呈现某种预览”,您可以在对话框中这样做

【讨论】:

  • 实际意思是,不扩展JColorChooser也可以吗?
  • 查看完整的ColorChooserDemo。它们不扩展 JColorChooser。他们只是将 ChangeListener 添加到选择模型中。
  • you 所做的可能不同的是,您可能正在调用静态 JColorChooser.showDialog(), 方法,而您需要创建一个 instance(不是扩展类)。
  • 查看我的 UPDATE 以获得更简单的示例。
  • 感谢您的帮助。我想投票,但我的投票超过了当天的最大值。谢谢
猜你喜欢
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多