JHintingTextField Linksbündiger Hinweiß

L

lottofee

Gast
Hallo zusammen,

hier im Froum habe ich folgende Klasse gefunden:
http://www.java-forum.org/506751-post14.html

(JHintingTextField)

Mit der Klasse kann man Textfelder erzeugen die einen Hinweiß anzeigen solange diese nicht gefüllt sind.
Die Klasse funktioniert wunderbar, nur leider wir der Hinweiß rechtsbündig angezigt.

Ich hätte den Hinweiß gerne linksbündig.


Ich dachte man könnte es an dieser stelle ändern:
Java:
  protected HighlightPainter createHighlightPainter() {
    return new Highlighter.HighlightPainter() {
 
      final JLabel label = new JLabel("", //$NON-NLS-1$
            SwingConstants.TRAILING); //<-----
      final int gap = 3;
Leider hat es keine Auswirkung.

vielen lieben dank im vorraus
 

TiGreen

Mitglied
Einfach dieses im Code ersetzen dann gehts ;)

PHP:
   public void paint(
            Graphics g,
            int p0,
            int p1,
            Shape bounds,
            JTextComponent c) {
        final String hint = (String) c.getClientProperty( //
              "emptyTextHint"); //$NON-NLS-1$
        if (hint == null
              || hint.length() == 0
              || c.getDocument().getLength() != 0) {
          return;
        }
        label.setText(hint);
 
        final Insets ins = c.getInsets();
        final boolean ltr = c.getComponentOrientation().isLeftToRight();
        if (ltr) {
          ins.right += gap;
        } else {
          ins.left += gap;
        }
 
        final Dimension pref = label.getPreferredSize();
        final int prHeight = pref.height;
        final int prWidth = pref.width;
        final int w = Math.min(c.getWidth() - ins.left - ins.right, prWidth);
        final int h = Math.min(c.getWidth() - ins.top - ins.bottom, prHeight);
        final int parentHeight = c.getHeight() - ins.top - ins.bottom;
        final int y = ins.top + (parentHeight - h) / 2;
        label.setForeground(Color.GRAY);
        label.setOpaque(false);
        SwingUtilities.paintComponent(g, label, c, 3, y, w, h);
      }

Code:
final int x = ltr ? c.getWidth() - ins.right - w : ins.left;final int x = ltr ? c.getWidth() - ins.right - w : ins.left;
wird einfach auskommentiert

Code:
SwingUtilities.paintComponent(g, label, c, 3, y, w, h);
statt (g, label, c, x, y, w, h); wird für x die Zahl 3 eingesetzt

Naja die Klasse ist ein wenig umständlich man könnte es mit viel weniger Code auch schaffen :D
 

Neue Themen


Oben