setOpaque(false)不适用于JTextArea

时间:2013-09-09 15:31:58

标签: java swing

我遇到了JTextArea的问题。我想用setOpaque(false)使JTextArea不可见,但它不起作用。 这是我的代码:


public class NewClass extends JFrame {

    private JPanel panel;
    private JTextArea tA;
    private JScrollPane scrollPane;

    public NewClass() {

        this.setTitle("Test");

        initJpanel();

        initTextArea();

        this.setSize(800, 640);

        this.setLocationRelativeTo(null);

        this.setResizable(false);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setContentPane(panel);

        this.setVisible(true);

    }

    public static void main(String[] args) {
        new NewClass();
    }

    private void initJpanel() {
        panel = new JPanel();
        panel.setLayout(null);
        panel.setDoubleBuffered(true);
        panel.setSize(800, 640);
        panel.setLocation(0, 0);
        panel.setBackground(Color.red);
    }

    private void initTextArea() {

        tA= new JTextArea();
        tA.setOpaque(false);
        tA.setLineWrap(true);
        tA.setWrapStyleWord(true);
        tA.setSize(400, 100);
        tA.setLocation(0, 0);
        tA.setOpaque(false);
        //tA.setBackground(new Color(0, 0, 0, 90));
        scrollPane = new JScrollPane(tA);
        scrollPane.setSize(400, 100);
        scrollPane.setLocation(0, 0);
        scrollPane.setOpaque(false);
        //scrollPane.setBackground(new Color(0, 0, 0, 90));
        scrollPane.setVisible(true);

        panel.add(scrollPane);
    }
}

我尝试了这段代码,但无效。 JTextArea不会变得透明。

1 个答案:

答案 0 :(得分:4)

您还必须设置scrollPane的视口不透明度:

scrollPane.getViewport().setOpaque(false);