首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Java中隐藏JFrame窗口上的默认最小化/最大化和关闭按钮?

在Java中隐藏JFrame窗口上的默认最小化/最大化和关闭按钮,可以通过以下步骤实现:

  1. 创建一个继承自JFrame的自定义窗口类。
  2. 在自定义窗口类的构造方法中,使用setUndecorated(true)方法去掉窗口的边框装饰。
  3. 创建一个自定义的标题栏面板,用于替代默认的窗口标题栏。
  4. 在自定义标题栏面板中添加需要的组件,如标题文本、最小化按钮、最大化按钮和关闭按钮。
  5. 通过setLayout(null)方法将自定义标题栏面板的布局设置为绝对布局。
  6. 使用setBounds(x, y, width, height)方法设置自定义标题栏面板的位置和大小。
  7. 使用addMouseListener()方法为自定义标题栏面板添加鼠标事件监听器,实现拖动窗口的功能。
  8. 使用addWindowListener()方法为自定义窗口类添加窗口事件监听器,实现关闭窗口的功能。

以下是一个示例代码:

代码语言:java
复制
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class CustomFrame extends JFrame {
    private JPanel titleBarPanel;
    private JLabel titleLabel;
    private JButton minimizeButton;
    private JButton maximizeButton;
    private JButton closeButton;

    public CustomFrame() {
        setUndecorated(true);

        titleBarPanel = new JPanel();
        titleBarPanel.setLayout(null);
        titleBarPanel.setBackground(Color.GRAY);

        titleLabel = new JLabel("Custom Frame");
        titleLabel.setForeground(Color.WHITE);
        titleLabel.setBounds(10, 5, 150, 20);

        minimizeButton = new JButton("-");
        minimizeButton.setBounds(170, 5, 20, 20);
        minimizeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                setExtendedState(JFrame.ICONIFIED);
            }
        });

        maximizeButton = new JButton("□");
        maximizeButton.setBounds(195, 5, 20, 20);
        maximizeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (getExtendedState() == JFrame.MAXIMIZED_BOTH) {
                    setExtendedState(JFrame.NORMAL);
                } else {
                    setExtendedState(JFrame.MAXIMIZED_BOTH);
                }
            }
        });

        closeButton = new JButton("X");
        closeButton.setBounds(220, 5, 20, 20);
        closeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        titleBarPanel.add(titleLabel);
        titleBarPanel.add(minimizeButton);
        titleBarPanel.add(maximizeButton);
        titleBarPanel.add(closeButton);

        titleBarPanel.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                getComponentAt(e.getPoint());
                Point origin = new Point(e.getXOnScreen(), e.getYOnScreen());
                SwingUtilities.convertPointFromScreen(origin, titleBarPanel);
                setLocation(origin);
            }
        });

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        setLayout(null);
        titleBarPanel.setBounds(0, 0, getWidth(), 30);
        add(titleBarPanel);
    }

    public static void main(String[] args) {
        CustomFrame frame = new CustomFrame();
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

这个示例代码创建了一个自定义窗口类CustomFrame,通过setUndecorated(true)方法去掉了窗口的边框装饰。然后,创建了一个自定义的标题栏面板titleBarPanel,其中包含了标题文本、最小化按钮、最大化按钮和关闭按钮。通过setLayout(null)方法将titleBarPanel的布局设置为绝对布局,并使用setBounds(x, y, width, height)方法设置其位置和大小。同时,为titleBarPanel添加了鼠标事件监听器,实现了拖动窗口的功能。最后,通过addWindowListener()方法为CustomFrame添加了窗口事件监听器,实现了关闭窗口的功能。

请注意,这个示例代码只是演示了如何隐藏默认的最小化/最大化和关闭按钮,并创建自定义的标题栏面板。具体的界面设计和功能实现可以根据实际需求进行调整和扩展。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体选择和使用腾讯云的产品应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java swing入门教程_java swing基础(菜鸟教程学习)

Java Swing介绍 1.Swing是一个为java世纪GUI工具包 2.Swing是JAVA基础类一部分 3.Swing包括了图形用户界面(GUI)器件:文本框,按钮,分隔表 4个器件...AWT是JFC一部分,支持可更换面板主题(各种操作系统默认特有主题),然而并不是真的使用原生平台提供设备,而是仅仅在表面上模仿它们。...JFrame javaGUI程序基本思路是以JFrame为基础,说白了就是窗体屏幕它是屏幕上window对象,能够最大化最小化关闭。...可以通过设置垂直水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在显示区内垂直居中对齐。默认情况下,只显示文本标签是开始边对齐。而只显示图像标签则水平居中对齐。...用于创建按钮类似实例“Login”。 嗯 虽然大部分菜鸟驿站照抄大半,但有自己理解注入,所以原创吧原创吧。

2.5K20

怎么实现关闭窗口

思路:在java源文件查找源代码 首先,我们知道JFrame.setDefaultCloseOperation(int operation)中提供了四种方式去实现关闭窗口 JFrame在包javax.Swing...,所以他继承了java.awt.Frame setDefaultCloseOperation(int operation) 下面贴上 JFrame.setDefaultCloseOperation(int...HIDE_ON_CLOSE(在 WindowConstants 定义):调用任意已注册 WindowListener 对象后自动隐藏该窗体。...WindowConstans(窗口常量)是在包Javax.Swing接口 然而窗口即使不注册指定监视器也可以最大化最小化,所以推测,当初始化窗口时候,窗口会默认注册监视器 从上面看出,下面要去找..., 然后我就不知道怎么查了 其实从那四个参数意思上面看也能看出个大概 答案 DO_NOTHING_ON_CLOSE:什么都不做,那我就根本不用实现关闭按钮了 HIDE_ON_CLOSE:隐藏窗口

4.1K70
  • Java 2 图形设计卷Ⅱ- SWING》第2章 Swing基本知识

    例2-2应用程序还设置窗体缺省关闭操作并添加一个窗口监听器,该监听器在窗体被关闭后会退出这个应用程序。有关Swing窗体缺省关闭操作更多信息,请参见2.1.4节“JFrame类”。  ...其中大部分方法与JApplet相应方法实现方式是相同。例如,如果允许根格检查,则JFrame.setLayoutJFrame.addImpl都将弹出一个异常信息。  ...JFrameframeInit()方法允许窗体键盘事件窗口事件,设置窗体背景色,并允许根格检查。...通常,这需要重载事件处理方法,需要简单地隐藏窗口或隐藏窗口并清除其本地资源。而Swing通过把一个缺省关闭操作与每一个JFrame实例相关联来使窗口关闭事件较容易处理。...然后,这个小应用程序创建按钮,设置按钮边界并把每个按钮添加到内容。  即使轻量按钮在重量按钮之前添加到内容,轻量按钮也仍在重量按钮下显示。

    2.5K20

    GUI组件添加、布局设置

    准备好窗口后,就可以使用JLabel来new出一个标签对象,像构建窗口一样使用setBounds把标签显示位置坐标设置好,再使用窗口对象访问add();方法把标签组件添加到窗口上: ?...更改字体大小: 使用setFont();方法可以改变某个组件字体大小,形体: ? 运行效果: ?...设置窗口对象默认关闭方式: setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 直接关闭虚拟机 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE...); 隐藏关闭,对象不会销毁 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 销毁对象关闭 窗口标题:    setTitle();方法,可以设置窗口标题...添加按钮:   使用JButton来new出一个按钮对象,像构建窗口一样使用setBounds把标签显示位置坐标设置好,再使用窗口对象访问add();方法把按钮组件添加到窗口上: ?

    1.2K20

    PC端自动化测试(一)

    应用程序可访问技术 支持控件访问技术 Win32 API(backend=“win32”) 默认backend MFC,VB6,VCL简单WinForms控件大多数旧应用程序 MS UI Automation...Navicat for MySQL"] # 方式二:app.类名dlg =app.TNavicatMainForm dlg.print_control_identifiers() 操作 # 窗口最大化...dlg.maximize() # 窗口最小化dlg.minimize() # 窗口恢复正常大小dlg.restore() # 查找窗口显示状态,最大化为1,正常为0status = dlg.get_show_state...() # 获取当前窗口坐标位置rect = dlg.rectangle()print(rect)# (L548,T194,R1768,B1043) # 关闭窗口dlg.close() 选择控件 控件:...窗口上内容 # 选择控件 # menu = dlg.Menumenu = dlg["Menu"]print(menu.print_control_identifiers()) # 查看Menu上控件

    4K61

    客户端开发(Electron)认识窗口

    背景说明: 窗口指就是我们在电脑端经常使用软件时候显示Logo,标题操作最小化最大化关闭按钮标题栏及标题栏下面显示内容整个窗口,这往往在Web前端接触不是那么多,但要开发一款体验不错...resizable 窗口是否支持缩放,默认支持 minimizable 窗口是否支持最小化默认支持 maximizable 窗口是否支持最大化默认支持 渲染进程是否集成Node.js环境...是否启用单独上下文环境运行 自定义窗口标题栏: 下图是我们初始时候标题栏菜单栏两部分(记得当时刚学计算机课就是认识每一部分名称): 我要自定义窗口标题栏第一步那就是要隐藏默认标题栏...,在窗口对象上新增frame属性且设置值为false,如下图: 在VueApp.vue通过html标签来绘制我们标题栏,绘制后结果如下图所示: 为标题栏按钮增加事件: 按钮事件调用函数定义均与...我们需要在主进程关闭展示窗口,并由我们在渲染进程控制: 总结: 本篇主要介绍了对于Electron开发GUI应用是对于窗口上标题栏自定义,简单做了一些演示,后续还有一块就完成了整个窗口部分内容

    5.2K60

    Data Structure_JavaSwingJava Swing基础

    Java Swing基础 首先需要注意就是JFrame这个类,如果在main类整直接new一个出来是没有任何变化,需要设置一个setvisible为true来显示出来。...); this.setVisible(true); } 这是一个标准模板,设置窗口大小不可重新改变,关闭窗口时整个程序同时关闭。...JFrame是最上层一个窗口,如果要绘制的话是不可以在窗口本身绘制。MenuBar就是最大化最小化关闭等等操作。...Content Pane其实是一个容器,可以装载其他组件,最常用就是面板,Jpanel就是一个面板,后面的绘制都会画在Jpanel上。也就是说想要画上东西就需要在Jframe上加入Jpanel。...这个时候窗口大小画布大小就是两个不一样大小了,如果想要窗口大小自适应画布大小,就可以调用pack这个函数自适应。 绘制 在Jpanel类里面有一个paintComponent方法,这个方法

    65520

    何在Swing组件中使用HTML

    许多Swing组件在其GUI显示文本字符串。默认情况下,组件文本以一种字体颜色显示,并且全部显示在一行上。...可以分别通过调用组件setFontsetForeground方法来确定组件文本字体颜色。...HTML格式可以在所有Swing按钮,菜单项,标签,工具提示选项卡式格以及使用标签来呈现文本表等组件中使用。...+ "middle button", rightButtonIcon); b3.setFont(font); 请注意,我们必须使用u标记使使用HTML按钮助记符...还请注意,当禁用按钮时,不幸是,其HTML文本将保持黑色,而不是变为灰色。 (请参阅错误#4783068,以查看这种情况是否发生了变化。) 本节讨论了如何在普通非文本组件中使用HTML。

    2.5K20

    java课设选题_基于javaweb课程设计

    ,跳转,相应页面表示,当数据量过大需要分页时,就是用来实现页面的跳转。...1)在SearchLook.java,用来放文本标题容器不知道用JLabel还是Jframe,最终经过百度查询资料,选择JLabel,原因如下:JFrame是一个顶层框架类,好比一个窗户框子...也是一个容器类,这个框子可以嵌入几个玻璃,就是说Jframe可以将标签文本按钮安放并处理,而且能实现最小化/最大化、改变大小、移动等功能特性。...而JPanel是一个容器类,相当于一大玻璃,可以放置文本框按钮等非容器组件。在结果展示,我只需要一个JLabel一个文本区域一个按钮,所以我选择JPanel。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    89610

    java swing一篇轻松学习(高考后可以自学)

    方法名称 概述 getContentPane() 返回此窗体 contentPane 对象 getDefaultCloseOperation() 返回用户在此窗体上单击“关闭按钮时执行操作 setContentPane...(Container contentPane) 设置 contentPane 属性 setDefaultCloseOperation(int operation) 设置用户在此窗体上单击“关闭按钮默认执行操作...setDefaultLookAndFeelDecorated (boolean defaultLookAndFeelDecorated) 设置 JFrame 窗口使用 Windows 外观(边框、...添加到组件 int getIconTextGap() 返回此标签显示文本图标之间间隔量 int getHorizontalTextPosition() 返回 JLabel 文本相对其图像水平位置...方法名称 说明 addActionListener(ActionListener listener) 为按担组件注册 ActionListener 监听 void setIcon(Icon icon) 设置按钮默认图标

    9.4K10

    软件测试|超好用超简单Python GUI库——tkinter(二)

    前言Tkinter,主窗口控件(window)是一切控件基础,它好比是一台高速运转机器,而其他控件则相当于这台机器上部件,比如齿轮、链条、螺丝等等。...normal(正常显示),icon(最小化),zoomed(最大化)window.withdraw()用来隐藏主窗口,但不会销毁窗口。...window.iconify()设置窗口最小化window.deiconify()将窗口从隐藏状态还原window.winfo_screenwidth() window.winfo_screenheight...no.1')#将文本内容放置在主窗口内text.pack()# 添加按钮,以及按钮文本,并通过command 参数设置关闭窗口功能button=tk.Button(window,text="关闭"...设置位置当我们运行 Tkinter 程序时,主窗口都会出现在距离屏幕左上角指定位置上,这是由 Tkinter 软件包默认设置

    2.6K30

    疯踏java知识点-进阶精讲篇

    该资源是关于Java师生管理系统,可以学习借鉴一下。 继续进行讲解,如果前面有不懂,可以翻阅一下同专栏其他文章,该专栏是针对Java知识从0开始。...JavaBean 一个Java类,其对象可用于程序中封装数据 举例:学生类,手机类 要求:1、成员变量使用private修饰 2、提供每一个成员变量对应setXxx...当我们需要从控制台或文件读取输入时,JavaScanner类提供了一种 方便方式来实现。...Scanner类位于java.util包,它可以解析基本类型 字符串,并提供了多种方法来读取不同类型输入。...JFrame():构造一个最初不可见窗体 成员方法 void setVisible(boolean b):显示或隐藏窗口 void setSize(int width,int height

    18820

    悬浮开发设计实践

    市面上常见悬浮微信视频通话功能,有如下特点:整屏页面能切换到一个小悬浮;悬浮能运行在其他app上方;悬浮能跳回整屏页面,并且悬浮消失需求悬浮效果点击缩小按钮,将当前远端视屏加载进悬浮...针对悬浮展示移除,则可以模仿ToastaddViewremoveView操作……视频通话Activity如何最小化Activity本身自带了一个moveTaskToBack(boolean nonRoot...而Android 8.0对系统API行为做了修改,包括使用SYSTEM_ALERT_WINDOW权限应用无法再使用一下窗口类型来在其他应用口上方显示提醒窗口:如果需要实现在其他应用口上方显示提醒窗口...7.2 边界逻辑关闭悬浮先看一下问题谷歌坑人地方,都没地方设置这个悬浮是否只用到app内,所以默认在桌面上也会显示自己悬浮。...尝试解决这个问题为了解决这个问题,最初实现方式是对所有经过activity进行记录,显示就加1,页面被挂起就减1,如果减到当前计数为0时说明所有页面已经关闭了,就可以隐藏悬浮了。

    2.4K40

    easyUI常用API

    折叠工具 minimizable:true//最小化 maximizable:true//最大化 closable:true"//可关闭 tools: 表示一个JSON数组, 数组应存储JSON...选项卡使用class是: easyui-tabs 在easyui-tabs元素添加一个div就是一个子选项卡 子选项卡可以通过title属性来指定标题, data-options添加关闭按钮...元素添加一个div就是一个子选项卡 子选项卡可以通过title属性来指定标题, data-options添加关闭按钮 data-options="closable:true" <div class...title: 窗口标题, 类型为string 重写了一些data-options属性 : collapsible: 是否可折叠 , 类型boolean 默认true minimizable: 是否显示最小化按钮..., 类型boolean 默认true maximizable: 是否显示最大化按钮 , 类型boolean 默认true closable: 是否显示关闭按钮 .

    2.5K30

    Java制作520表白代码——爱一个人需要理由吗?

    Java编程作为表白方式 技术与情感结合,通过使用Java编程作为表白方式,程序员们将技术与情感相结合。这不仅仅是展示他们编程技能,更是表达他们对心爱的人关心爱意。...在代码背后,隐藏着深深情感真挚情感表达。 ✨设计表白程序思路 关于程序设计思路这块我就不多说了,会的人看一下写代码就能秒懂,不会也不会在意程序设计思路(这个建立对象程序)。...放入JPanel text1.setBounds(20,10,1000,50);//设置字体位置 //创建按钮组件 JButton btnok1=new...);//将JLabel放入JPanel text1.setBounds(20,10,1000,50);//设置字体位置 //创建按钮组件 JButton...);//给按钮添加这个对象,给按钮添加一个ActionListener对象 // frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE

    25110

    Java入门(12)-- Swing程序设计

    可以通过继承java.swing.JFrame类创建一个窗体,在这个窗体添加组件,同时为组件设置事件。...: JFrame常用构造方法有两种: public JFrame() public JFrame(String title) Java窗体常用关闭方式有4: DO_NOTHING_ON_CLOSE...:什么都不做就将窗体关闭; DISPOSE_ON_CLOSE:任何注册监听程序对象后会自动隐藏并释放窗体; HIDE_ON_CLOSE:隐藏窗口默认窗口关闭; EXIT_ON_CLOSE:退出应用程序默认窗口关闭...在网格布局管理器,每一个组件大小都相同,网格中空格个数由网格行数列数决定。...7. weightxweighty属性 设置网格组每一行每一列对额外空间分布方式。默认值为0,表示不分布容器额外空间。

    5.4K10

    Java项目实战之天天酷跑

    实现在输对用户名密码后即可进入开始游戏界面的功能。 界面功能需求图: ? 具体要求: 当鼠标移入开始游戏按钮后,按钮将由暗变亮,鼠标移开后,按钮又由亮变暗。 帮助、离开按钮同理。...implements MouseListener { //设置窗体基本属性 大小 /** * 1.1、设置窗体基本属性大小 居中 边框隐藏 默认关闭按钮 logo图标 1.2...默认关闭按钮 logo图标 this.setSize(1200,730);//大小 this.setLocationRelativeTo(null);//居中 this.setUndecorated...(true);//边框隐藏 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭 this.setIconImage(new...(线程) 我们想要实现动态缓冲加载过程,让进度条动起来,就需要引入线程概念了。 线程: Thread类这样定义: 线程是程序执行线程,Java虚拟机允许程序同时运行多个执行线程。

    2.5K20

    三万字Java项目实战之天天酷跑

    实现在输对用户名密码后即可进入开始游戏界面的功能。 界面功能需求图: ? 具体要求: 当鼠标移入开始游戏按钮后,按钮将由暗变亮,鼠标移开后,按钮又由亮变暗。 帮助、离开按钮同理。...implements MouseListener { //设置窗体基本属性 大小 /** * 1.1、设置窗体基本属性大小 居中 边框隐藏 默认关闭按钮 logo图标 1.2...默认关闭按钮 logo图标 this.setSize(1200,730);//大小 this.setLocationRelativeTo(null);//居中 this.setUndecorated...(true);//边框隐藏 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭 this.setIconImage(new...(线程) 我们想要实现动态缓冲加载过程,让进度条动起来,就需要引入线程概念了。 线程: Thread类这样定义: 线程是程序执行线程,Java虚拟机允许程序同时运行多个执行线程。

    1.8K21
    领券