ColorChooser einschränken

Status
Nicht offen für weitere Antworten.
W

Wölfle

Gast
Hallo,

Der ColorChooser von java swing ist mir bei weitem zu überdimensioniert sprich Featuritis...

wie bringe ich den original ColorChooser:





In diesen Zustand:
 

André Uhres

Top Contributor
Selber bauen :D
Code:
/*
 * ColorPalette.java
 *
 */

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

class ColorPalette extends JDialog implements ActionListener {

    private JPanel palette;
    private int[] colorValues;
    private Color[] colorList;
    private Color color;

    public ColorPalette(final Frame parent, final boolean modal) {
        super(parent, modal);
        setUndecorated(true);

        palette = new JPanel();
        palette.setLayout(new GridLayout(9, 31, 1, 1));
        palette.setPreferredSize(new Dimension(357, 100));
        initColors();//                          w    h
        int i = 0;
        for (; i < colorList.length; i++) {
            addButton(colorList[i]);
        }
        getContentPane().add(palette, BorderLayout.CENTER);
        pack();
    }

    private JButton addButton(final Color color) {
        JButton button = new JButton();
        button.setRolloverEnabled(false);
        button.setBackground(color);
        palette.add(button);
        button.addActionListener(this);
        String text = "" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue();
        button.setToolTipText(text);
        return (button);
    }

    public void actionPerformed(final ActionEvent e) {
        JButton button = (JButton) e.getSource();
        color = button.getBackground();
        setVisible(false);
    }

    public Color getColor() {
        return color;
    }

    private void initColors() {
        initColorValues();
        int numColors = colorValues.length / 3;
        colorList = new Color[numColors];
        for (int i = 0; i < numColors; i++) {
            colorList[i] = new Color(colorValues[(i * 3)], colorValues[(i * 3) + 1], colorValues[(i * 3) + 2]);
        }
    }

    private void initColorValues() {
        colorValues = new int[]{
            255, 255, 255, // row 1
            204, 255, 255,
            204, 204, 255,
            204, 204, 255,
            204, 204, 255,
            204, 204, 255,
            204, 204, 255,
            204, 204, 255,
            204, 204, 255,
            204, 204, 255,
            204, 204, 255,
            255, 204, 255,
            255, 204, 204,
            255, 204, 204,
            255, 204, 204,
            255, 204, 204,
            255, 204, 204,
            255, 204, 204,
            255, 204, 204,
            255, 204, 204,
            255, 204, 204,
            255, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 255, 204,
            204, 204, 204, // row 2
            153, 255, 255,
            153, 204, 255,
            153, 153, 255,
            153, 153, 255,
            153, 153, 255,
            153, 153, 255,
            153, 153, 255,
            153, 153, 255,
            153, 153, 255,
            204, 153, 255,
            255, 153, 255,
            255, 153, 204,
            255, 153, 153,
            255, 153, 153,
            255, 153, 153,
            255, 153, 153,
            255, 153, 153,
            255, 153, 153,
            255, 153, 153,
            255, 204, 153,
            255, 255, 153,
            204, 255, 153,
            153, 255, 153,
            153, 255, 153,
            153, 255, 153,
            153, 255, 153,
            153, 255, 153,
            153, 255, 153,
            153, 255, 153,
            153, 255, 204,
            204, 204, 204, // row 3
            102, 255, 255,
            102, 204, 255,
            102, 153, 255,
            102, 102, 255,
            102, 102, 255,
            102, 102, 255,
            102, 102, 255,
            102, 102, 255,
            153, 102, 255,
            204, 102, 255,
            255, 102, 255,
            255, 102, 204,
            255, 102, 153,
            255, 102, 102,
            255, 102, 102,
            255, 102, 102,
            255, 102, 102,
            255, 102, 102,
            255, 153, 102,
            255, 204, 102,
            255, 255, 102,
            204, 255, 102,
            153, 255, 102,
            102, 255, 102,
            102, 255, 102,
            102, 255, 102,
            102, 255, 102,
            102, 255, 102,
            102, 255, 153,
            102, 255, 204,
            153, 153, 153, // row 4
            51, 255, 255,
            51, 204, 255,
            51, 153, 255,
            51, 102, 255,
            51, 51, 255,
            51, 51, 255,
            51, 51, 255,
            102, 51, 255,
            153, 51, 255,
            204, 51, 255,
            255, 51, 255,
            255, 51, 204,
            255, 51, 153,
            255, 51, 102,
            255, 51, 51,
            255, 51, 51,
            255, 51, 51,
            255, 102, 51,
            255, 153, 51,
            255, 204, 51,
            255, 255, 51,
            204, 255, 51,
            153, 244, 51,
            102, 255, 51,
            51, 255, 51,
            51, 255, 51,
            51, 255, 51,
            51, 255, 102,
            51, 255, 153,
            51, 255, 204,
            153, 153, 153, // row 5
            0, 255, 255,
            0, 204, 255,
            0, 153, 255,
            0, 102, 255,
            0, 51, 255,
            0, 0, 255,
            51, 0, 255,
            102, 0, 255,
            153, 0, 255,
            204, 0, 255,
            255, 0, 255,
            255, 0, 204,
            255, 0, 153,
            255, 0, 102,
            255, 0, 51,
            255, 0, 0,
            255, 51, 0,
            255, 102, 0,
            255, 153, 0,
            255, 204, 0,
            255, 255, 0,
            204, 255, 0,
            153, 255, 0,
            102, 255, 0,
            51, 255, 0,
            0, 255, 0,
            0, 255, 51,
            0, 255, 102,
            0, 255, 153,
            0, 255, 204,
            102, 102, 102, // row 6
            0, 204, 204,
            0, 204, 204,
            0, 153, 204,
            0, 102, 204,
            0, 51, 204,
            0, 0, 204,
            51, 0, 204,
            102, 0, 204,
            153, 0, 204,
            204, 0, 204,
            204, 0, 204,
            204, 0, 204,
            204, 0, 153,
            204, 0, 102,
            204, 0, 51,
            204, 0, 0,
            204, 51, 0,
            204, 102, 0,
            204, 153, 0,
            204, 204, 0,
            204, 204, 0,
            204, 204, 0,
            153, 204, 0,
            102, 204, 0,
            51, 204, 0,
            0, 204, 0,
            0, 204, 51,
            0, 204, 102,
            0, 204, 153,
            0, 204, 204,
            102, 102, 102, // row 7
            0, 153, 153,
            0, 153, 153,
            0, 153, 153,
            0, 102, 153,
            0, 51, 153,
            0, 0, 153,
            51, 0, 153,
            102, 0, 153,
            153, 0, 153,
            153, 0, 153,
            153, 0, 153,
            153, 0, 153,
            153, 0, 153,
            153, 0, 102,
            153, 0, 51,
            153, 0, 0,
            153, 51, 0,
            153, 102, 0,
            153, 153, 0,
            153, 153, 0,
            153, 153, 0,
            153, 153, 0,
            153, 153, 0,
            102, 153, 0,
            51, 153, 0,
            0, 153, 0,
            0, 153, 51,
            0, 153, 102,
            0, 153, 153,
            0, 153, 153,
            51, 51, 51, // row 8
            0, 102, 102,
            0, 102, 102,
            0, 102, 102,
            0, 102, 102,
            0, 51, 102,
            0, 0, 102,
            51, 0, 102,
            102, 0, 102,
            102, 0, 102,
            102, 0, 102,
            102, 0, 102,
            102, 0, 102,
            102, 0, 102,
            102, 0, 102,
            102, 0, 51,
            102, 0, 0,
            102, 51, 0,
            102, 102, 0,
            102, 102, 0,
            102, 102, 0,
            102, 102, 0,
            102, 102, 0,
            102, 102, 0,
            102, 102, 0,
            51, 102, 0,
            0, 102, 0,
            0, 102, 51,
            0, 102, 102,
            0, 102, 102,
            0, 102, 102,
            0, 0, 0, // row 9
            0, 51, 51,
            0, 51, 51,
            0, 51, 51,
            0, 51, 51,
            0, 51, 51,
            0, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 51,
            51, 0, 0,
            51, 51, 0,
            51, 51, 0,
            51, 51, 0,
            51, 51, 0,
            51, 51, 0,
            51, 51, 0,
            51, 51, 0,
            51, 51, 0,
            0, 51, 0,
            0, 51, 51,
            0, 51, 51,
            0, 51, 51,
            0, 51, 51,
            51, 51, 51
        };
    }
}
 
W

Wölfle

Gast
LOL :lol: dir war wohl langweilig was :wink: super danke dir!!! Werde ich eingehend untersuchen wie du das gemacht hast interessiert mich sehr! :toll:
 
W

Wölfle

Gast
Hallo Andre,

war gerade dabei den code einzubauen und an meine Wünsche anzupassen (4(rot,gelb,blau,grün) x 10 Farben (immer in 10er abstufungen) nun habe ich deinen code mal ausgeführt und stellte fest , dass meine Buttons gar keine Hintergrundfarbe annehmen obwohl dies im code gesetzt ist, liegt das an meinem LooknFeel z.B. substance/jgoodies den ich benutze?

Code:
private JButton addButton(final Color color) {
        JButton button = new JButton();
        button.setRolloverEnabled(false);
        button.setBackground(color);
 

Tobias

Top Contributor
Hast du schon versucht, deine Buttons undurchsichtig zu machen? Macht man mit setOpaque(true);

mpG
Tobias
 
W

Wölfle

Gast
Tobias hat gesagt.:
Hast du schon versucht, deine Buttons undurchsichtig zu machen? Macht man mit setOpaque(true);

mpG
Tobias

ja geht leider dennoch net hm...




Code:
private JButton addButton(final Color color) {
        JButton button = new JButton();
        button.setRolloverEnabled(false);
        button.setOpaque(true); 
        button.setBackground(color);
        palette.add(button);
        button.addActionListener(this);
        String text = "" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue();
        button.setToolTipText(text);
        return (button);
    }
 
W

Wölfle

Gast
so LooknFeel deaktiviert und es geht... das kanns doch net sein oder dass die LooknFeels mich beschränken ???
 

Wildcard

Top Contributor
Wölfle hat gesagt.:
so LooknFeel deaktiviert und es geht... das kanns doch net sein oder dass die LooknFeels mich beschränken ???
Wenn schlecht implementiert, kann das sehr wohl passieren. Und da ich im Zusammenhang mit Substance eigentlich immer nur von Problemen lese, solltest du es vielleicht nicht verwenden.
 
W

Wölfle

Gast
Wildcard hat gesagt.:
Wölfle hat gesagt.:
so LooknFeel deaktiviert und es geht... das kanns doch net sein oder dass die LooknFeels mich beschränken ???
Wenn schlecht implementiert, kann das sehr wohl passieren. Und da ich im Zusammenhang mit Substance eigentlich immer nur von Problemen lese, solltest du es vielleicht nicht verwenden.

Welchen LooknFeel könntest du mir denn empfehlen der auch mit Swing Komponenten Veränderungen zuverlässig funkioniert ? Ich würde gerne Nimbus ausprobieren, doch auf https://nimbus.dev.java.net/servlets/ProjectDocumentList

gibt es leider keine .jar files ??
 

Wildcard

Top Contributor
Wölfle hat gesagt.:
Swing ist ja cross plattform look...
Swing ist Swing. Swing verwendet Look and Feels. Das Cross Platform Look and Feel ist ein L'n'F das mit der JRE ausgeliefert wird. Das System Look and Feel ein (bzw. mehrere) anderes integriertes. Auf meinem Desktop will ich auch gar keine anderen Look and Feels sehen als das System L'n'F.
 
W

Wölfle

Gast
Wildcard hat gesagt.:
Wölfle hat gesagt.:
Swing ist ja cross plattform look...
Swing ist Swing. Swing verwendet Look and Feels. Das Cross Platform Look and Feel ist ein L'n'F das mit der JRE ausgeliefert wird. Das System Look and Feel ein (bzw. mehrere) anderes integriertes. Auf meinem Desktop will ich auch gar keine anderen Look and Feels sehen als das System L'n'F.

heißt das jetzt du bist kein Freund von Swing? :wink: Warum steckt denn eigentlich Sun soviel Arbeit in den Swing Nachfolger Nimbus ??? weil die OS looks alle sch... sind? Naja Nimbus sieht richtig gut aus und da es von Sun kommt dürfte es hoffentlich wie mit Swing keine Probleme wie mit dem cholorchooser code und substance geben - hoffentlich-
 

Wildcard

Top Contributor
Verstehst du eigentlich was ich sage? Swing und Look and Feels sind zwei verschiedene Dinge.
Nimbus ist mit nichten ein Swing Nachfolger, sondern ein eben solches Look and Feel für Swing.
Die System Look and Feels sind IMO ganz hervorragend, ich bin lediglich gegen Cross Platform Look and Feels weil sie sich nicht sauber in das System integrieren.
Code:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Und die Sache ist gegessen.
 
W

Wölfle

Gast
Wildcard hat gesagt.:
Verstehst du eigentlich was ich sage? Swing und Look and Feels sind zwei verschiedene Dinge.
Nimbus ist mit nichten ein Swing Nachfolger, sondern ein eben solches Look and Feel für Swing.
Die System Look and Feels sind IMO ganz hervorragend, ich bin lediglich gegen Cross Platform Look and Feels weil sie sich nicht sauber in das System integrieren.
Code:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Und die Sache ist gegessen.

ok dann habe ich da was verwechselt bzw. habe mich falsch ausgedrückt, was ich eigentlich gar nicht so meinte... also ist Nimbus und substance in deinen Augen schrott aber Swing ok, da es kein look ist sondern eine Sammlung von GUI Elementen hoffe so wars jetzt richtig.
 

Wildcard

Top Contributor
Nein, substance scheint nur sehr viele Probleme zu machen. Nimbus ist ein interessantes Projekt. Ich bevorzuge lediglich das SystemLookAndFeel, da es sich im Gegensatz zu allen anderen nahtlos in den Desktop integriert.
Woher soll ein Entwickler wissen wie eine Anwendung für mich aussehen soll?
Daher System L'n'F, dann sieht alles so wie der User es sich selbst eingerichtet hat.
Anders ist nicht immer besser...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben