如何在 Java 中禁用 JFrame 的特定窗口控制按钮?

问题描述 投票:0回答:1

BA 想要一个窗口

  • 有一个关闭按钮
  • 有一个最大化按钮
  • 没有启用最小化按钮

他希望我们 Java 开发者能够实现 C 开发人员所做的事情,这就是这个

enter image description here

考虑到窗口控制按钮的要求,似乎没有办法

JFrame
。但是如何禁用最小化按钮呢?如果这是唯一的方法(应用程序安装在 Windows PC 上),我会考虑使用本机方法

我可以做这样的事情,但最小化按钮保持启用状态——只是框架弹出回来

import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class NonMinimizableFrameDemo {

    public NonMinimizableFrameDemo() {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null);
        frame.addWindowListener(getWindowAdapter());
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(NonMinimizableFrameDemo::new);
    }
    private final JFrame frame = new JFrame();

    private WindowAdapter getWindowAdapter() {
        return new WindowAdapter() {

            @Override
            public void windowIconified(WindowEvent we) {
                frame.setState(JFrame.NORMAL);
                JOptionPane.showMessageDialog(frame, "Cant Minimize");
            }
        };
    }
}
java swing
1个回答
0
投票

最小化已禁用。重复问题:禁用 JFrame 最小化按钮

package fenster;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;

public class Test
{
   public Test()
   {
      initComponents();
   }

   public static void main(String[] args)
   {
      javax.swing.SwingUtilities.invokeLater(new Runnable()
      {
         @Override
         public void run()
         {
            new Test();
         }
      });
   }

   private final JFrame frame = new JFrame();

   private void initComponents()
   {
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.addWindowListener(getWindowAdapter());
      frame.setSize(600, 400);
      frame.setVisible(true);
   }

   private WindowAdapter getWindowAdapter()
  {
      return new WindowAdapter()
      {

         @Override
         public void windowIconified(WindowEvent we)
         {
            frame.setState(JFrame.NORMAL);
         }
      };
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.