JColorChooser - zmiana koloru lini

0

Witam. Mam klase prywatna JColorChoser ktora uruchamiamy z buttona (Wiem, ze tu zmienia kolor tla dlatego nie wiem to powinno byc).

JButton przycisk = new JButton("Wybierz Kolor");
przycisk.addActionListener(new Kolor());
private class Kolor implements ActionListener {

        public Kolor() {
            wybor = new JColorChooser();
            wybor.getSelectionModel().addChangeListener(new ChangeListener() {

                public void stateChanged(ChangeEvent zdarzenie) {
                    setBackground(wybor.getColor());
                }
            });

            okno = new JDialog(
                    (Frame) null,
                    false // okno niemodalne
                    );
            okno.getContentPane().add(wybor);
            okno.pack();
        }

        public void actionPerformed(ActionEvent zdarzenie) {
            wybor.setColor(getBackground());
            okno.show();
        }
        private JDialog okno;
        private JColorChooser wybor;
    }

I nie wiem co mam teraz zrobic zeby kolor jaki wybierzemy podac do funkcji linia w zamian za Color.BLACK?

linia(g2,Color.BLACK,startPoint,e.getPoint());

Bede wdzieczna za pomoc.

0

Kolor jakiej linii ?
Po naciśnięciu przycisku uruchamiasz okno wyboru koloru z domyślnie wybranym kolorem tła jakiegoś komponentu. Jak rozumiem po wybraniu koloru chcesz zmienić kolor jakiejś bliżej nie określonej linii. Może do wyboru koluru użyj:
<url>http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JColorChooser.html#showDialog(java.awt.Component, java.lang.String, java.awt.Color)</url>

Z fragmentu:

linia(g2,Color.BLACK,startPoint,e.getPoint());

wnioskuje, że chcesz wyrysować gdzieś linie na komponencie w metodzie paintComponent. Obiekt g2 zapewne oznacza, że używasz obiektu Graphics2D.

Czyli pewnie coś w stylu:

class MyPanel extends JPanel {
    private Color lineColor = Color.BLACK;
    
    @override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        double x1 = ...
        double y1 = ...
        double x2 = ...
        double y2 = ...
        g2.setColor(this.lineColor);
        g2.draw(new Line2D.double(x1, y1, x2, y2));
    }

    public void setLineColor(Color c) {
        this.lineColor = c;
        this.repaint();
    }
}

Więc po wybraniu koloru należałoby wywołać metodę setLineColor.

1 użytkowników online, w tym zalogowanych: 0, gości: 1