0

我想让我的 TextArea 的背景不透明。我在netbeans 使用swing gui 表单。

我想重叠图像前面的说明(见这张图片),但问题是如果文本在图像前面,则看不到它们。我真的不知道不透明的背景是否是这里的问题(我已经使用分层窗格在图片所在的 JLabel 和我放置说明的 TextArea 上重叠)。

你能帮我找出问题所在吗? 在此处输入图像描述

这是代码:

import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class About extends javax.swing.JDialog {

public About(JFrame owner) {
    super(owner, true);
    initComponents();
    setSize(500, 500);
    setLocation(300, 120);
    getContentPane().setBackground(Color.getHSBColor(204, 204, 255));
    jLabel1.setIcon(new ImageIcon("HangmanStartlight.jpg"));

 }

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jTabbedPane1 = new javax.swing.JTabbedPane();
    jLayeredPane1 = new javax.swing.JLayeredPane();
    jLabel1 = new javax.swing.JLabel();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTextArea1 = new javax.swing.JTextArea();

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

    jLabel1.setText("jLabel1");
    jLabel1.setBounds(0, 0, 420, 290);
    jLayeredPane1.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);

    jTextArea1.setColumns(20);
    jTextArea1.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 14)); // NOI18N
    jTextArea1.setForeground(new java.awt.Color(51, 0, 51));
    jTextArea1.setRows(5);
    jTextArea1.setText("Hangman\n\nGuess the \"HIDDEN PHRASE\" to proceed to the next\nlevel.  Hangman is filled with several words, \npresented in random order each time you play.\n\nhOw To pLay!!!\n\nYou can select letters by clicking on the letter buttons\nshown at the window.\n\nBe very careful! 'coz you are only allowed 10 wrong\nguesses per puzzle.\n\nYou will at the corner Top-Left of the window your \n\"Name\", your \"Score\", your \"Level\", your \"Lives Left\"\nand also the \"Life Line\" which you can use as a Hint.\n\nEnjoy Playing and Have Fun :)");
    jTextArea1.setWrapStyleWord(true);
    jScrollPane1.setViewportView(jTextArea1);

    jScrollPane1.setBounds(0, 0, 420, 280);
    jLayeredPane1.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);

    jTabbedPane1.addTab("tab1", jLayeredPane1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(26, 26, 26)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 427, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(39, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(21, 21, 21)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(128, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}

ps我正在使用swing builder/swing gui表单..

4

2 回答 2

0

尝试使用背景面板中的提示之一。

于 2011-01-31T16:17:50.507 回答
-1

编写您自己的组件,在屏幕上手动绘制文本。这就是用 Java 而不是 Swing 制作游戏的方式......

于 2011-01-31T16:25:35.653 回答