java - JColorChooser 不会改变 JLabel 的文本颜色

标签 java swing jlabel jcolorchooser

我正在尝试创建一个 JColorChooser 对话框,其上方有一个 JLabel,以便 JLabel 文本颜色将更改为用户使用 JColorChooser 选择的颜色。这是我到目前为止所拥有的,但它没有为我编译。

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

public class JColorChooserExample extends JFrame
{       
private JColorChooser colorChooser;                                // instance variables          
private JLabel banner;

public JColorChooserExample()                                             // constructor
{
    add(banner = new JLabel("Welcome to the Tutorial Zone!", JLabel.CENTER), BorderLayout.NORTH);
  banner.setForeground(Color.BLACK);
    add(colorChooser = new JColorChooser(banner.getForeground()), BorderLayout.SOUTH);

    ListenerClass listener = new ListenerClass();
    colorChooser.addChangeListener(listener);
}

public static void main(String[] args)
{       
    JColorChooserExample frame = new JColorChooserExample();   // new frame object 
    frame.setTitle("JColorChooser Example");                   // set frame title
    frame.pack();                                                             // sizes the frame so components fit frame  
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      // ends program on frame closing
    frame.setLocationRelativeTo(null);                                // centre frame
    frame.setVisible(true);                                    // make frame visible
}

private class ListenerClass implements ChangeListener
{   
    public void stateChanged(ChangeEvent e) 
    {
        Color newColor = colorChooser.getColor();
        banner.setForeground(newColor);
    }
}
}

最佳答案

ChangeListener 应向 JColorChooserColorSelectionModel 注册,而不是直接向 JColorChooser 本身注册。

colorChooser.getSelectionModel().addChangeListener(listener);

How to Use Color Choosers

关于java - JColorChooser 不会改变 JLabel 的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822681/

相关文章:

java - 连接按钮不起作用

java - 基础 Android - MainActivity 的目的

java - SwingUtilities invokeLater 的主要目的

java - 我怎样才能使 JLabel 在一段时间后消失?

java - 初始化后如何重置JLabel约束?

java - 通过计时器在 JDialog 中设置动态 JLabel 文本

java - BaseAdapter.notifyDataSetChanged 不更新其 ListView

java - Spring 测试中未调用方面

java - 如何从 Java JFrame 检查屏幕状态

Java Mousepress() 绘制图像