Динамически определяя передний план на основе его фактического фонаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Динамически определяя передний план на основе его фактического фона

Сообщение Anonymous »

Вот проблема. < /p>
с Windows L & F, фон выбора по умолчанию по умолчанию является белым, выбранные текстовые фрагменты, которые выделены желтыми. Я могу передать любой цвет этому методу утилиты, не обязательно чего -то, хранящегося на фоне . не фон свойство). Даже если я переопределяю getforeground () , мне все еще нужно как -то получить доступ к этой информации. Что сложно, так как я не знаю, какая точная часть текстового качания собирается рисовать (независимо от того, выделено или нет).
Как я могу решить эту проблему? />

Код: Выделить всё

package demos.text;

import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;

public class HighlighterDemo {

private static final DefaultHighlighter.DefaultHighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);

public static void main(String[] args) throws BadLocationException, UnsupportedLookAndFeelException, ClassNotFoundException, InstantiationException, IllegalAccessException {
UIManager.setLookAndFeel(WindowsLookAndFeel.class.getName());
Container mainPanel = createMainPanel();
JFrame frame = new JFrame("Highlighter Demo");
frame.setContentPane(mainPanel);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}

private static JPanel createMainPanel() throws BadLocationException {
JPanel panel = new JPanel(new BorderLayout());
panel.add(createTextArea());
return panel;
}

private static JTextArea createTextArea() throws BadLocationException {
JTextArea textArea = new JTextArea();
textArea.setFont(new Font("Arial", Font.PLAIN, 20)); // the default font in nonsensically small
String text = "Some sample text";
textArea.setText(text);
textArea.getHighlighter().addHighlight(text.indexOf("sample"), text.indexOf("text"), painter);
return textArea;
}
}
p.s.: , если вам интересно, вот что я использую для.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... background
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»