Skip to content

Commit

Permalink
fix:颜色选择
Browse files Browse the repository at this point in the history
  • Loading branch information
yakirChen committed Jul 23, 2021
1 parent a38daa5 commit 09b5d75
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 59 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package io.github.yakirchen.watermark.swing.listener;

import javax.swing.JColorChooser;
import javax.swing.JLabel;
import javax.swing.JSlider;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import static io.github.yakirchen.watermark.swing.panel.WatermarkConfPanel.color;

/**
* ColorChooserListener
*
* @author yakir on 2021/07/22 22:10.
*/
public record ColorAlphaListener(Component component, JLabel colorPreviewLabel, String colorChooserTitle, JSlider alphaSlider) implements ActionListener {

public static ColorAlphaListener bind(Component component, JLabel colorPreviewLabel, String colorChooserTitle, JSlider alphaSlider) {

return new ColorAlphaListener(component, colorPreviewLabel, colorChooserTitle, alphaSlider);
}

@Override
public void actionPerformed(ActionEvent event) {
color = JColorChooser.showDialog(component, colorChooserTitle, color);
color = new Color(color.getRed(), color.getGreen(), color.getBlue(), alphaSlider.getValue());
colorPreviewLabel.setForeground(color);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.github.yakirchen.watermark.swing.listener;

import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.Color;

import static io.github.yakirchen.watermark.swing.panel.WatermarkConfPanel.color;

/**
* ColorChooserListener
*
* @author yakir on 2021/07/22 22:10.
*/
public record ColorChooserListener(JLabel colorPreviewLabel, JLabel alphaValueLabel, JSlider alphaSlider) implements ChangeListener {

public static ColorChooserListener bind(JLabel colorPreviewLabel, JLabel alphaValueLabel, JSlider alphaSlider) {

return new ColorChooserListener(colorPreviewLabel, alphaValueLabel, alphaSlider);
}

@Override
public void stateChanged(ChangeEvent event) {
var value = alphaSlider.getValue();
alphaValueLabel.setText(String.valueOf(value));
color = new Color(color.getRed(), color.getGreen(), color.getBlue(), alphaSlider.getValue());
colorPreviewLabel.setForeground(color);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package io.github.yakirchen.watermark.swing.panel;

import io.github.yakirchen.watermark.swing.entity.WatermarkConf;
import io.github.yakirchen.watermark.swing.listener.WatermarkColorChooserListener;
import io.github.yakirchen.watermark.swing.listener.ColorAlphaListener;
import io.github.yakirchen.watermark.swing.listener.ColorChooserListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
Expand All @@ -25,13 +25,14 @@
*/
public class WatermarkConfPanel extends JPanel {

private final int DEFAULT_ALPHA = (int) (255 * 0.2);
private final Color DEFAULT_COLOR = new Color(225, 0, 0, DEFAULT_ALPHA);
private static final int DEFAULT_ALPHA = (int) (255 * 0.2);
private static final Color DEFAULT_COLOR = new Color(225, 0, 0, DEFAULT_ALPHA);

private final JTextField textInput;
private final JSlider alphaSlider;
private final JSpinner fontSizeSpinner;
private Color color = DEFAULT_COLOR;

public static Color color = DEFAULT_COLOR;

public WatermarkConfPanel() {
super();
Expand Down Expand Up @@ -81,7 +82,7 @@ public WatermarkConfPanel() {
alphaSlider.setMajorTickSpacing(5);
alphaSlider.setMinorTickSpacing(1);
alphaSlider.setPaintTicks(true);
alphaSlider.addChangeListener(WatermarkColorChooserListener.bind(colorPreviewLabel, alphaValueLabel, alphaSlider, color));
alphaSlider.addChangeListener(ColorChooserListener.bind(colorPreviewLabel, alphaValueLabel, alphaSlider));

line1.add(alphaLabel);
line1.add(Box.createHorizontalStrut(20));
Expand All @@ -98,17 +99,14 @@ public WatermarkConfPanel() {
line2.add(Box.createHorizontalStrut(20));
line2.add(fontSizeSpinner);

var colorChooserBtn = new JButton("选择字体颜色");
var colorChooserTitle = "选择字体颜色";
var colorChooserBtn = new JButton(colorChooserTitle);
colorChooserBtn.setHorizontalAlignment(SwingConstants.CENTER);
colorChooserBtn.setVerticalAlignment(SwingConstants.CENTER);
colorChooserBtn.setPreferredSize(new Dimension(120, 45));
colorChooserBtn.setMinimumSize(colorChooserBtn.getPreferredSize());
colorChooserBtn.setMaximumSize(colorChooserBtn.getPreferredSize());
colorChooserBtn.addActionListener(_event -> {
this.color = JColorChooser.showDialog(this, "选择字体颜色", this.color);
this.color = new Color(color.getRed(), color.getGreen(), color.getBlue(), alphaSlider.getValue());
colorPreviewLabel.setForeground(color);
});
colorChooserBtn.addActionListener(ColorAlphaListener.bind(this, colorPreviewLabel, colorChooserTitle, alphaSlider));

var colorBtnBox = Box.createVerticalBox();
colorBtnBox.setPreferredSize(new Dimension(120, 50));
Expand Down

0 comments on commit 09b5d75

Please sign in to comment.