【问题标题】:Easy multicolored text in JavaJava中的简单多色文本
【发布时间】:2011-09-16 05:21:07
【问题描述】:

在编写了一个控制台应用程序后(对于普通的 I/O 任务,这里不值一提),我决定需要将文本设置为多色以提高可读性。由于对 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
    }
}

这样我就可以遍历之前打印的文本,插入颜色信息并显示它。

谁能指出我正确的方向?方法,类,sn-p,什么?

【问题讨论】:

  • 我认为可能存在控制台可移植性问题,因为并非每个控制台都可以处理颜色和颜色标记。 Linux 有 ncurses,但它有 Java API 吗?

标签: java swing text colors


【解决方案1】:

您可以以 html 格式输出您的字符串,并在需要着色的地方添加标签。然后将 HTML 分配给 JLabel 或 JTextPane。

【讨论】:

    【解决方案2】:

    由于对 Swing 缺乏经验,我希望将其保留在命令提示符中

    您可能会从Message Console 那里得到一些想法。

    【讨论】:

      【解决方案3】:

      参考swing api

      Link 是一个使用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);
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2010-12-13
        • 2014-07-15
        • 2023-04-09
        • 2015-10-19
        • 1970-01-01
        • 2017-05-27
        • 2019-08-25
        • 1970-01-01
        • 2015-03-13
        相关资源
        最近更新 更多