0

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 では、不透明度を変更しません。Q: 不透明度をリアルタイムで変更するにはどうすればよいですか?

4

2 に答える 2

0

次のコマンドをフレームのコンストラクターに追加します。この例のフレームの名前はですMyFrame

    jCheckBox1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent ae) {
            AWTUtilities.setWindowOpacity(MyFrame.this, 0.2f);
        }
    });
于 2011-11-11T10:59:21.220 に答える
0

JFrame を静的に設定した場合でも、不透明度メソッドが同じクラス内にある場合は参照できるはずです。そうでない場合は、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);
            }
        }
    });
  }
}
于 2011-11-11T10:31:25.387 に答える