【问题标题】:show only 2 panels in JColorChooser在 JColorChooser 中仅显示 2 个面板
【发布时间】:2016-04-09 12:56:04
【问题描述】:

我只想显示“Swartches”和“RGB”面板。

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

import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.colorchooser.AbstractColorChooserPanel;

public class ColorPickerSample {

    private static final long serialVersionUID = 1L;
    private static String hex = "#ff0033";

    private static void createAndShowGUI() {

        // Create and set up the window.
        final JFrame frame = new JFrame("Centered");

        // Display the window.
        frame.setSize(50, 100);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // set flow layout for the frame
        frame.getContentPane().setLayout(new FlowLayout());

        JButton button = new JButton("");
        System.out.println(Color.decode(hex));
        button.setBackground(Color.decode(hex));
        button.setPreferredSize(new Dimension(20, 20));

        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                JColorChooser cc = new JColorChooser();
                AbstractColorChooserPanel defaultPanels[] = cc.getChooserPanels();
                cc.removeChooserPanel(defaultPanels[1]);
                cc.removeChooserPanel(defaultPanels[2]);
                cc.removeChooserPanel(defaultPanels[4]);
            //  frame.getContentPane().add(cc);
                //Color color = cc.showDialog(frame, "Choose a color", Color.blue);
                }
        });

        frame.getContentPane().add(button);

    }

    public static void main(String[] args) {

        //Schedule a job for the event-dispatching thread:

        //creating and showing this application's GUI.

        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                createAndShowGUI(); 

            }

        });
    }

}

如何只显示 2 个面板

【问题讨论】:

    标签: java swing jcolorchooser


    【解决方案1】:

    API 还有一个removeChooserPanel(...) 方法。

    所以我猜你可以这样做:

    AbstractColorChooserPanel defaultPanels[] = cc.getChooserPanels();
    cc.removeChooserPanel( defaultPanels[4] ); // CMYK
    cc.removeChooserPanel( defaultPanels[2] );  // HSL
    ...
    

    编辑:

    我不确定如何在面板中显示这个修改后的选择器

    您将需要使用 JColorChooser 的 createDialog(...) 方法:

    JDialog dialog = JColorChooser.createDialog(
        frame.getContentPane(),
        "Choose a Color",
        true,
        cc,
        null,
        null);
    dialog.setVisible(true);
    System.out.println( cc.getColor() );
    

    【讨论】:

    • 我厌倦了,但我无法让它发挥作用。我已经编辑了主要问题中的代码
    • @user1631306,您发布的代码对我来说效果很好(将来发布带有问题的代码,这样我们就不必猜测您可能尝试过什么)。当然,您实际上需要在框架中显示选择器,但是一旦我这样做了,我只会看到“色板”和“RGB”。我在 Windows 7 上使用 JDK 8。
    • 当然,我会记住这一点。我不确定如何在面板中显示这个修改后的选择器。我可以像 "Color color = cc.showDialog(frame, "Choose a color", Color.blue);" 那样做吗
    • 它有效。最后一件事。我将如何使用这个修改后的 JcolorChooser "cc" 来显示一个对话框。使用“Color color = cc.showDialog(frame, "Choose a color", Color.blue);",带来原色面板。
    • 但这不会返回我选择的颜色,就像我在使用“showDialog”时越来越早
    猜你喜欢
    • 2012-02-23
    • 2017-10-29
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2015-01-27
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多