Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过JFrame更改亮度?_Java_Swing_Jframe_Brightness - Fatal编程技术网

Java 通过JFrame更改亮度?

Java 通过JFrame更改亮度?,java,swing,jframe,brightness,Java,Swing,Jframe,Brightness,我试图在Swing中的JFrame上弹出一个窗口。我已经这样做了,弹出窗口将在旧JFrame上分层,并通过传入JFrame然后.disable()来禁用旧JFrame。然而,我也试图使后面的框架变暗,以表明它是禁用的 我发现: 但是,在禁用JFrame之前,如何使用它来降低作为参数的JFrame的亮度呢?类似于变暗(frame),它使用函数变暗(JFrame)将其降低。谢谢 事实上,我要回答我的评论: 要在另一个窗口上显示窗口,并禁用下部窗口,请将上部窗口设为模态JDialog,并将下部窗口

我试图在Swing中的JFrame上弹出一个窗口。我已经这样做了,弹出窗口将在旧JFrame上分层,并通过传入JFrame然后.disable()来禁用旧JFrame。然而,我也试图使后面的框架变暗,以表明它是禁用的

我发现:


但是,在禁用JFrame之前,如何使用它来降低作为参数的JFrame的亮度呢?类似于变暗(frame),它使用函数变暗(JFrame)将其降低。谢谢

事实上,我要回答我的评论:

  • 要在另一个窗口上显示窗口,并禁用下部窗口,请将上部窗口设为模态JDialog,并将下部窗口作为其父窗口传入
  • 使顶层窗口变暗的一种方法是使其玻璃窗格可见,然后在其上绘制一种半透明的灰色

下面是我对概念代码的测试:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Dialog.ModalityType;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import javax.swing.*;

public class DimView {
   protected static final Color GP_COLOR = new Color(0, 0, 0, 30);

   private static void createAndShowGui() {
      final JFrame frame = new JFrame("DimView");
      final JPanel glassPanel = new JPanel() {
         protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(GP_COLOR);
            g.fillRect(0, 0, getWidth(), getHeight());
         };
      };
      glassPanel.setOpaque(false);
      frame.setGlassPane(glassPanel);
      JPanel mainPanel = new JPanel();
      mainPanel.setPreferredSize(new Dimension(400, 400));
      mainPanel.setBackground(Color.pink);
      mainPanel.add(new JButton(new AbstractAction("Push Me") {

         @Override
         public void actionPerformed(ActionEvent evt) {
            glassPanel.setVisible(true);

            JDialog dialog = new JDialog(frame, "Dialog",
                  ModalityType.APPLICATION_MODAL);
            dialog.add(Box.createRigidArea(new Dimension(200, 200)));
            dialog.pack();
            dialog.setLocationRelativeTo(frame);
            dialog.setVisible(true);

            glassPanel.setVisible(false);
         }
      }));

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

这不是禁用JFrame的方式。您可以通过使用模态JDialog来实现这一点。至于调暗JFrame,请向我们展示您的代码,最好是a,并告诉我们它是如何工作的。要考虑的一个方法是使用JROOTPAN的玻璃窗格。我的“弹出”是一个J对话框,我自定义,以便使用一个图像的背景,和禁用的部分工作,即使它说不赞成。很抱歉,如果这是一个糟糕的做法,我是一个新编程人员,不熟悉对话框模式(参见下面的示例),最好避免使用不推荐的方法。谢谢。我创建了一个以半透明图像为图标的JLabel,并将其设置为玻璃窗格。工作起来像一个机器人charm@user3285692:太好了,很高兴你能让它工作!对于我来说,JPanel很管用,不管它是否可见。例如,请参见上面的代码。