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 {
15
16
17
18
19 private static final Logger LOGGER = LogManager.getRootLogger();
20
21
22
23
24 private String placeholderText;
25 private int xOffset;
26
27
28
29
30
31
32 public JTextFieldPlaceholder(String placeholder, String value) {
33 this(placeholder);
34 this.setText(value);
35 }
36
37
38
39
40
41 public JTextFieldPlaceholder(String placeholder) {
42 this.placeholderText = placeholder;
43 }
44
45 public JTextFieldPlaceholder(String placeholder, int xOffset) {
46 this(placeholder);
47 this.xOffset = xOffset;
48 }
49
50 @Override
51 public void paint(Graphics g) {
52 try {
53 super.paint(g);
54 } catch (ClassCastException e) {
55 LOGGER.log(LogLevelUtil.CONSOLE_JAVA, e, e);
56 }
57 if (this.getText().isEmpty()) {
58 int h = this.getHeight();
59 var fm = g.getFontMetrics();
60 UiUtil.drawPlaceholder(this, g, this.placeholderText, this.xOffset, h / 2 + fm.getAscent() / 2 - 1);
61 }
62 }
63
64 public void setPlaceholderText(String placeholderText) {
65 this.placeholderText = placeholderText;
66 }
67 }