【问题标题】:java custom colorChooserPaneljava自定义colorChooserPanel
【发布时间】:2016-11-08 08:57:15
【问题描述】:

我想在 java swing 中为JcolorChooser 创建一个自定义的ColorChooserPanel

public class ColorPanel  extends AbstractColorChooserPanel {

    public void buildChooser() {
        setLayout(new GridLayout(1, 3));
        makeAddButton("Red", Color.red);
        makeAddButton("Green", Color.green);
        makeAddButton("Blue", Color.blue);  }

        public void updateChooser() {
        }
        public String getDisplayName() {
            return "MyChooserPanel";  }

        public Icon getSmallDisplayIcon() {
            return null;  }

        public Icon getLargeDisplayIcon() {
            return null;  }

        private void makeAddButton(String name, Color color) {
            JButton button = new JButton(name);
            button.setBackground(color);
            button.setAction(new AbstractAction() {
                private static final long serialVersionUID = 1L;

                public void actionPerformed(ActionEvent arg0) {
                    JButton button = (JButton) arg0.getSource();
                    getColorSelectionModel().setSelectedColor(button.getBackground());

            }});
            add(button);  }
}

它应该显示 3 个颜色的按钮,但它显示的是 6 个按钮。谁能告诉我我哪里做错了?以及如何删除下面的面板。

ColorPanel colorPanel  = new ColorPanel();
colorPanel.buildChooser();
colorChooser =  new JColorChooser();
colorChooser.addChooserPanel(colorPanel);

http://i.stack.imgur.com/u1fag.png

另一个问题:我可以通过色板颜色面板删除最近的窗格吗?我只想显示调色板。我指的是下图中的“最近”部分。

http://i.stack.imgur.com/VfdDJ.png

【问题讨论】:

  • 您能告诉我们buildChooser() 的名称吗?这可能与有用的答案有关。
  • 我就是这样做的(见我最后编辑的问题)
  • 我不太明白你的第二个问题,试着每个问题问一个问题

标签: java jcolorchooser


【解决方案1】:
ColorPanel colorPanel  = new ColorPanel();
// colorPanel.buildChooser(); <-- remove this line

当您将colorPanel 添加到JChooserPanel 时,会调用此方法:

public void installChooserPanel(JColorChooser enclosingChooser) {
    if (chooser != null) {
        throw new RuntimeException ("This chooser panel is already installed");
    }
    chooser = enclosingChooser;
    chooser.addPropertyChangeListener("enabled", enabledListener);
    setEnabled(chooser.isEnabled());
    buildChooser();
    updateChooser();
}

因此您无需再次“构建”您的面板,因为它在您将其添加到 colorChooser 时已经构建。

【讨论】:

  • 我已经尝试过了,但它并没有解决问题。对于第二个问题,我添加了另一张图片。谢谢。
猜你喜欢
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 2017-04-30
  • 2013-10-29
  • 1970-01-01
相关资源
最近更新 更多