Простой многоцветный текст на Java - PullRequest
2 голосов
/ 16 сентября 2011

После написания консольного приложения (для повседневных задач ввода-вывода, которые здесь не стоит упоминать), я решил, что нужно сделать текст многоцветным для удобства чтения.Мне бы хотелось сохранить его в командной строке, так как я не имел опыта работы с Swing, но, насколько я мог судить, не было никакого способа сделать это, я огляделся по Swing API и не смог ничего найти.

В идеале я мог бы использовать что-то вроде

for(int i=0; i<aString.length(); i++){
    if(aString.charAt(i) == '?'){
        String pre = aString.substring(0,i);
        String post = aString.substring(i);
        aString = pre + red("?") + post;    //As you can see by red("?"), I have no idea what I'm doing
    }
}

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

Кто-нибудь может указать мне правильное направление?Метод, класс, фрагмент, что-нибудь?

Ответы [ 3 ]

4 голосов
/ 16 сентября 2011

Вы можете вывести свою строку в формате html, добавив тег, где ожидается окраска. Затем назначьте HTML-код JLabel или JTextPane.

1 голос
/ 16 сентября 2011

Я бы хотел сохранить его в командной строке, так как не имел опыта работы с Swing

Вы можете получить некоторые идеи из Консоли сообщений .

enter image description here

1 голос
/ 16 сентября 2011

См. качели API

Ссылка представляет собой небольшой пример использования всех функций, доступных в JLabel, включая цвет текста в нем.

Если вы хотите просто отобразить текст разными цветами, тогда:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainClass extends JPanel {

  public void paint(Graphics g) {
    Dimension d = this.getPreferredSize();
    int fontSize = 20;

    g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));

    g.setColor(Color.red);

    g.drawString("Hello 1", 10, 20);

    g.setColor(Color.black);

    g.drawString("Hello 2", 30, 50);
  }

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200,200);
    frame.setVisible(true);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...