1 package com.jsql.view.swing.text;
2
3 import com.jsql.util.LogLevelUtil;
4 import com.jsql.view.swing.util.UiUtil;
5 import org.apache.logging.log4j.LogManager;
6 import org.apache.logging.log4j.Logger;
7
8 import javax.swing.*;
9 import java.awt.*;
10
11
12
13
14 public class JTextFieldPlaceholder extends JTextField implements JPlaceholder {
15
16 private static final Logger LOGGER = LogManager.getRootLogger();
17
18
19
20
21 private String placeholderText;
22 private int xOffset;
23
24
25
26
27
28
29 public JTextFieldPlaceholder(String placeholder, String value) {
30 this(placeholder);
31 this.setText(value);
32 }
33
34
35
36
37
38 public JTextFieldPlaceholder(String placeholder) {
39 this.placeholderText = placeholder;
40 }
41
42 public JTextFieldPlaceholder(String placeholder, int xOffset) {
43 this(placeholder);
44 this.xOffset = xOffset;
45 }
46
47 @Override
48 public void paint(Graphics g) {
49 try {
50 super.paint(g);
51 } catch (ClassCastException e) {
52 LOGGER.log(LogLevelUtil.CONSOLE_JAVA, e, e);
53 }
54 if (this.getText().isEmpty()) {
55 int h = this.getHeight();
56 var fm = g.getFontMetrics();
57 UiUtil.drawPlaceholder(this, g, this.placeholderText, this.xOffset, h / 2 + fm.getAscent() / 2 - 1);
58 }
59 }
60
61 @Override
62 public void setPlaceholderText(String placeholderText) {
63 this.placeholderText = placeholderText;
64 }
65 }