Добавление водяного знака в JTextArea - PullRequest
0 голосов
/ 12 ноября 2009

Являются ли они способом добавления водяного знака к JTextArea ?

Ответы [ 3 ]

7 голосов
/ 12 ноября 2009

Я подозреваю, что вам нужно создать подкласс JTextArea и переопределить метод paintComponent(), сначала рисуя фоновое изображение и вызывая super.paintComponent() для отображения текста:

public void paintComponent (Graphics g) {
    g.drawImage(watermark, 0, 0, this);
    super.paintComponent(g);
}

edit: , как указано camickr , a JTextArea непрозрачен, поэтому вашему подклассу потребуется изменить это, вызвав setOpaque(false).

1 голос
/ 12 ноября 2009

Вы также можете использовать JXLayer , который может создавать довольно сложные визуальные эффекты

1 голос
/ 12 ноября 2009

Я сомневаюсь, что приведенное выше предложение сработает. JTextArea непрозрачен, поэтому текст будет закрашен поверх изображения. Поэтому, по крайней мере, вам нужно будет сделать текстовую область непрозрачной, а затем вам нужно будет поиграть с цветами фона области просмотра и / или полосы прокрутки.

Если вы хотите использовать повторно используемое решение, попробуйте создать ImageBorder. Порядок покраски:

а) Компонент краски

б) PaintBorder

в) рисовать детей

Так что, если вы добавите границу к текстовой области, она будет рисоваться поверх текста в фиксированном месте.

Или, если вы добавите границу в область просмотра, она будет рисовать под текстом плавающее местоположение.

...