Как изменить прозрачность JFrame в реальном времени - PullRequest
0 голосов
/ 11 ноября 2011

Есть ли хороший способ изменить непрозрачность JFrame в реальном времени.сейчас мне нужно перезапустить окно, чтобы получить непрозрачность

        if (Variables.LoggerOpacity){
        if (AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.TRANSLUCENT)) {
              AWTUtilities.setWindowOpaque(Frame, true);
              AWTUtilities.setWindowOpacity(Frame, 0.60f);
        }
    }

Когда я использую

AWTUtilities.setWindowOpacity(Frame, 0.60f);

На кнопке JCheckBox я не изменю непрозрачность.В: Как я могу изменить непрозрачность в реальном времени?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

Добавьте следующую команду в конструктор фрейма.Имя фрейма в этом примере MyFrame.

    jCheckBox1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent ae) {
            AWTUtilities.setWindowOpacity(MyFrame.this, 0.2f);
        }
    });
0 голосов
/ 11 ноября 2011

Даже если вы установили JFrame в статическое состояние, вы сможете ссылаться на него, если ваш метод непрозрачности находится в том же классе, если нет - создайте метод getter для ссылки на ваш JFrame и передайте его в вашу функцию,Вот пример программы, которая выполняется, и прозрачность работает отлично:

public class JFrameOpacityExample extends JFrame {

private static JFrame myFrame;
private static boolean loggerOpacity;
private static JButton button;

public static void main(String[] args) {

    myFrame = new JFrame("Test Frame");
    myFrame.setSize(400, 400);
    myFrame.setVisible(true);

    JPanel panel = new JPanel();

    button = new JButton("Press me");
    button.setBounds(100, 100, 50, 50);
    button.setVisible(true);
    panel.add(button);
    myFrame.add(panel);

    loggerOpacity = true;

    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            Object src = evt.getSource();
            if (src == button && loggerOpacity) {
                AWTUtilities.setWindowOpacity(myFrame, 0.40f);
            }
        }
    });
  }
}
...