【问题标题】:JTextArea goes black when interacting with applet?与小程序交互时,JTextArea 变黑?
【发布时间】:2025-12-03 19:15:01
【问题描述】:

由于某种原因,如果您突出显示文本区域文本,则背景变为黑色,因此使文本不可读,当我选择底部的单选按钮时(参见附图),整个文本区域再次变为黑色使文本不可读!有人知道它为什么这样做吗?

这是我的文本区域的代码...

        //Text area that displays the games instructions
    textAreaInstructions = new JTextArea(
        "To play choose your difficulty and then click start. \n\n" +
        "The aim of the game is to select the 'golden' rectangle, you will be presented with 4 \n" +
        "rectangles and you must choose one that has height and width proportions that represent \n" +
        "the golden ratio: 1.618. If you're not too sure what a golden rectangle looks like it's \n" +
        "best you start on beginner until you get the hang of it! \n\n" +
        "For every correctly identified golden rectangle you score 1 piece of 'Gold', however if you \n" +
        "incorrectly identify a golden rectangle, 1 piece of 'Gold' will be taken away from your \n" +
        "score. Remember, you only have 30 seconds, so collect as much 'Gold' as you can, good luck! \n"); 
    c.add (textAreaInstructions);
    textAreaInstructions.setBounds(130, 110, 600, 200);
    textAreaInstructions.setEditable(false);
    textAreaInstructions.setBackground( new Color(0, 0, 0, 0) ); //Transparrent background to text area

【问题讨论】:

    标签: java swing bluej


    【解决方案1】:

    Swing 无法识别透明色。相反,您必须使用 setOpaque 并将其传递给 false

    textAreaInstructions.setEditable(false);
    //textAreaInstructions.setBackground( new Color(0, 0, 0, 0) );
    textAreaInstructions.setOpaque(false);
    

    对于example,您也可以使用JLabel,其文本包含在HTML 中。 JLabel 默认是透明的

    【讨论】:

    • 啊哈!非常感谢!