Java JFrame隐藏标题栏以及最大化最小化关闭和拖动
来源:互联网 发布:奇游加速器mac 编辑:程序博客网 时间:2024/06/01 07:30
CSDN上第一篇博客,请大家多多支持!
// 转载请注明出处!
直入主题吧,目前主流的软件,图形化界面一般都没有标题栏,优点是简单大方。然而,界面的最大化最小化和关闭按钮也随之隐藏,窗体也无法拖动。因此,我总结了一些解决这些问题的思路,仅供大家分享。
一. 最大化,最小化和关闭
在隐藏标题栏后,可以自定义三个按钮,分别为最大化,最小化和关闭,并分别添加事件监听器。
b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);//监听器里的代码setExtendedState(JFrame.MAXIMIZED_BOTH);//窗体长宽分别最大化setExtendedState(JFrame.NORMAL); //窗体最大化后恢复默认尺寸setExtendedState(JFrame.ICONIFIED); //窗体最小化System.exit(0); // 关闭,当然也可以dispose()
二,拖动窗体
隐藏标题栏后,窗体无法拖动,确实是让人非常头痛。拖动的方法有很多,思路基本是一致的,记录下点击鼠标时的坐标,以及拖拽后的坐标,这个偏移量就是我们拖动窗体的关键。
addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { /* * 获取点击鼠标时的坐标 */ mouseAtX = e.getPoint().x; mouseAtY = e.getPoint().y; } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { setLocation((e.getXOnScreen()-mouseAtX),(e.getYOnScreen()-mouseAtY));//设置拖拽后,窗口的位置 } });
以下是包含这些功能的代码,希望对大家有所帮助。
package tt;import java.awt.Color;import java.awt.Font;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class UnTitleFrame extends JFrame implements ActionListener{ Toolkit toolkit = Toolkit.getDefaultToolkit(); // 设置窗体默认大小,使其适应屏幕大小 private int DEFAULE_WIDTH = (int) (toolkit.getScreenSize().getWidth() * 0.4); private int DEFAULE_HEIGH = (int) (toolkit.getScreenSize().getHeight() * 0.5); // 设置窗体位置,使其在屏幕居中 private int Location_x = (int) (toolkit.getScreenSize().getWidth() - DEFAULE_WIDTH) / 2; private int Location_y = (int) (toolkit.getScreenSize().getHeight() - DEFAULE_HEIGH) / 2; int mouseAtX = 0; int mouseAtY = 0; private JButton b2; public UnTitleFrame() { setUndecorated(true);//设置窗体的标题栏不可见 /* * 设置窗体可拖动 */ addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { /* * 获取点击鼠标时的坐标 */ mouseAtX = e.getPoint().x; mouseAtY = e.getPoint().y; } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { setLocation((e.getXOnScreen()-mouseAtX),(e.getYOnScreen()-mouseAtY));//设置拖拽后,窗口的位置 } }); /* * 实例化简单组件 */ JButton b1 = new JButton("最小化"); b2 = new JButton("最大化"); JButton b3 = new JButton("关闭"); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b3.setBounds(DEFAULE_WIDTH-90,0,90,45); b2.setBounds(DEFAULE_WIDTH-185,0,90,45); b1.setBounds(DEFAULE_WIDTH-280,0,90,45); JLabel label = new JLabel("无边框窗体的演示",JLabel.CENTER); label.setBounds(280,280,450,45); label.setFont(new Font("华文新魏", Font.BOLD,40)); JPanel contentPane = new JPanel(); contentPane.setBackground(Color.GRAY); contentPane.setLayout(null); contentPane.add(b1); contentPane.add(b2); contentPane.add(b3); contentPane.add(label); setContentPane(contentPane);//设置ContentPane setSize(DEFAULE_WIDTH,DEFAULE_HEIGH);// 设置窗体默认大小,使其适应屏幕大小 setLocation(Location_x, Location_y);//设置窗体在屏幕中的位置 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); //设置窗体可见 } public static void main(String[] args) { new UnTitleFrame(); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand() == "最大化") { setExtendedState(JFrame.MAXIMIZED_BOTH); b2.setText("正常化"); } if(e.getActionCommand() == "正常化") { setExtendedState(JFrame.NORMAL); b2.setText("最大化"); } if(e.getActionCommand() == "最小化") { setExtendedState(JFrame.ICONIFIED); } if(e.getActionCommand() == "关闭") { System.exit(0); } }}
怎么样,si不si对你有所帮助,支持原创,尽情点赞,评论,转载和关注吧。
阅读全文
0 0
- Java JFrame隐藏标题栏以及最大化最小化关闭和拖动
- java-去掉 JFrame上的最大化最小化和关闭按钮
- qq项目第一天(java JFrame 标题栏 最小化 最大化 拖动窗体)
- java 如何去掉JFrame上的最大化最小化和关闭按钮
- [Java]如何去掉JFrame上的最大化最小化和关闭按钮
- java-如何去掉JFrame上的最大化最小化和关闭按钮
- java-如何去掉JFrame上的最大化最小化和关闭按钮
- Java-如何去掉JFrame上的最大化最小化和关闭按钮
- JFrame最大化、最小化、关闭相关处理
- WPF窗体最大化、最小化、关闭按钮的隐藏和禁用
- WPF中隐藏窗口最小化、最大化和关闭按钮
- NSIS隐藏窗口标题栏自带的按钮(最大化,最小化,关闭X)
- QT实现无边框窗体的最小化,最大化/还原,关闭,拖动和双击最大化等功能
- 最大化、最小化和关闭按钮
- 最大化、最小化和关闭按钮
- 最大化、最小化和关闭按钮
- 最大化、最小化和关闭按钮
- 最大化、最小化和关闭按钮
- Java知识---awt--布局
- 29-类中的函数重载
- [spark] Task成功执行的结果处理
- 21. yii 2 library
- WSWP(用 python写爬虫) 笔记三:为爬虫添加缓存网页内容功能
- Java JFrame隐藏标题栏以及最大化最小化关闭和拖动
- Android Studio 结合Git的使用(一)
- Centos7 开启BBR加速
- 文章标题
- 算法(4)购物篮分析
- 单列模式实例
- linux作业练习(10.21/22)
- GCD 之dispatch source
- JAVA-8-多态笔记