如何在if语句中使用setopaque(true/false)

bksxznpy  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(272)

我的jlabel不会变成蓝色背景。jlabel已经设置为蓝色背景,但在按下按钮之前它不是不透明的。为什么还不不透明?setopaque是否适用于if语句?

import java.awt.Color;
import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;

import java.awt.event.*;

public class TestOpaque {

public static void main (String args[])
{
    JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel label = new JLabel("Label with blue background");
    label.setBackground(Color.BLUE);
    label.setOpaque(false);
    frame.add(label, BorderLayout.WEST);

    JButton button = new JButton("Button");
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            if (label.isOpaque() == false) {
            label.setOpaque(true);
            label.revalidate();
            }
        }
    });
    frame.add(button, BorderLayout.EAST);

    frame.pack();
    frame.setVisible(true);
}
}
deikduxw

deikduxw1#

if语句可以很好地工作,不过使用起来更好 if (!label.isOpaque()) { 您需要通过 repaint() 背景显示:

button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (!label.isOpaque()) {
                label.setOpaque(true);
                label.revalidate();
                label.repaint();
            }
        }
    });

相关问题