【问题标题】:Realign RGB Color Chooser Panel of JColorChooser Panel Java swingRealign JColorChooser Panel Java swing的RGB颜色选择器面板
【发布时间】:2022-01-22 17:27:33
【问题描述】:

我正在使用已修改为仅使用 RGB 面板的 JColorChooser 面板。此外,我从中删除了 alpha 输入。 (下图为标准图,供参考)

现在我想将颜色代码文本字段重新定位在蓝色字段的正下方,并将预览面板移动到所有输入的右侧。 这就是我想要显示的内容:

简而言之,我想重新定位选择器面板中的一些元素。该怎么做?

【问题讨论】:

  • 您必须重新定义 JColorChooser 创建的 JPanel。您不妨创建自己的JDialog。您可以从JColorChooser 复制JPanel 源代码作为起点。

标签: java swing user-interface jcolorchooser


【解决方案1】:

如果您只需要将预览面板向右移动并移除其他面板,您可以为颜色选择器编写自定义 UI。示例如下:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;

import javax.swing.JColorChooser;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicColorChooserUI;

public class ColorChooserTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new ColorChooserTest()::initUI);
    }
    
    private void initUI() {
        // if you need this behavior for all color choosers you shouldn't restore the old UI
        Object oldUI = UIManager.get("ColorChooserUI");
        UIManager.put("ColorChooserUI", RightSidePreviewColorUI.class.getName());
        Color c = JColorChooser.showDialog(null, "Right aligned chooser", Color.BLACK);
        UIManager.put("ColorChooserUI", oldUI);
        if (c == null) {
            System.out.println("You've pressed cancel!");
        } else {
            System.out.println("You've chosen: " + c);
        }
    }
    
    // if you use Nimbus L&F you must extend SynthColorChooserUI
    public static class RightSidePreviewColorUI extends BasicColorChooserUI {
        public static ComponentUI createUI(JComponent c) {
            return new RightSidePreviewColorUI();
        }

        @Override
        public void installUI(JComponent c) {
            super.installUI(c);
            Component comp = chooser.getPreviewPanel().getParent();
            chooser.removeAll();
            chooser.add(defaultChoosers[3]);
            chooser.add(comp, BorderLayout.EAST);

        }
    }
}

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2012-02-18
    • 1970-01-01
    • 2012-06-03
    • 2021-04-18
    相关资源
    最近更新 更多