Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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_Jdialog - Fatal编程技术网

Java 如何从JFrame中删除最大化和最小化按钮?

Java 如何从JFrame中删除最大化和最小化按钮?,java,swing,jframe,jdialog,Java,Swing,Jframe,Jdialog,我需要删除最大化和最小化按钮从一个。请建议如何执行此操作。下面是一个用于禁用框架装饰的相关示例 import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Dlg ex

我需要删除最大化和最小化按钮从一个。请建议如何执行此操作。

下面是一个用于禁用框架装饰的相关示例

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Dlg extends JDialog {
    public Dlg(JFrame frame, String str) {
        super(frame, str);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        });
    }

    public static void main(String[] args) {
        try {
            Dlg frame = new Dlg(new JFrame(), "No min max buttons");
            JPanel panel = new JPanel();
            panel.setSize(200, 200);
            JLabel lbl = new JLabel("blah blah");
            panel.add(lbl);
            frame.add(panel);
            frame.setSize(400, 400);
            frame.setVisible(true);
        } catch (IllegalArgumentException e) {
            System.exit(0);
        }
    }
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FrameTest implements Runnable {

    public static void main(String[] args) {
        EventQueue.invokeLater(new FrameTest());
    }

    @Override
    public void run() {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setUndecorated(true);
        JPanel panel = new JPanel();
        panel.add(new JLabel("Stackoverflow!"));
        panel.add(new JButton(new AbstractAction("Close") {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        }));
        f.add(panel);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}

注意:我最初编辑了的答案,但有人建议我创建一个新的答案

有几种方法可以自定义用户可用的窗口控件

当前,在保留标题栏和关闭按钮的同时,删除最大化和最小化按钮的唯一方法是使用而不是
JFrame

import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class DialogDemo {

    public static void main(String[] args) {
        JDialog dialog = new JDialog(new JFrame(), "No min max buttons");
        // necessary as setDefaultCloseOperation(EXIT_ON_CLOSE) is 
        // not available for JDialogs.
        dialog.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        });

        JLabel label = new JLabel("blah blah");
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(400, 400));
        panel.add(label);

        dialog.add(panel);
        dialog.pack();
        dialog.setVisible(true);
    }
}
对话框解决方案使用户无法最小化和最大化窗口,包括通过使用快捷方式,但它不会取消调整窗口大小的功能

使用将仅删除“最大化”按钮,代价是无法调整窗口大小

最后,如所述,该方法将禁用框架装饰,删除标题栏和窗口边缘。这使得用户更难拖动、调整大小和关闭窗口,尽管这并非不可能,因为仍然可以使用快捷键执行这些操作。

您可以尝试以下操作:

JFrame loadingDialog = new JFrame();

JLabel label = new JLabel("blah blah");
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(400, 400));
panel.add(label);

loadingDialog.add(panel);
loadingDialog.setUndecorated(true);

loadingDialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
                    loadingDialog.pack();

loadingDialog.setVisible(true);

看一看,看看这是否回答了您的问题。它说的是关于使用JDialog,在myeclipse中,我正在导入java.awt.*但JDialog无法识别。这方面有什么帮助吗?
JDialog
JFrame
都在
java.swing
包中。您需要导入java.swing.@Aeth:实际上是
javax.swing.
。这有什么缺点吗?您的答案是什么?你没有解释你在做什么,我也看不到你从JFrame中移除最小/最大按钮的地方。虽然我现在确实明白了这一点,但我花了一两分钟想知道这到底是怎么一个答案。注意,这种解决方案使聚焦窗口变得更加困难。这是一个对话框,这意味着它在Windows中不会显示为打开的程序。如果用户聚焦另一个窗口(如web浏览器)以重新聚焦对话框,则用户必须最小化所有其他程序。这是唯一真正回答问题的答案。