Java-如何去掉JFrame上的最大化最小化和关闭按钮(转)

简介: 在JDK1.4以前,我们只有一种方式来去掉窗口的标题栏,那就是直接使用JWindow,用JWindow来代替JFrame使用。但用过JWindow的人一定知道,JWindow在操作系统的任务栏是不可见的,这样我们就无法在几个视窗之间来切换到这个窗口了。

在JDK1.4以前,我们只有一种方式来去掉窗口的标题栏,那就是直接使用JWindow,用JWindow来代替JFrame使用。但用过JWindow的人一定知道,JWindow在操作系统的任务栏是不可见的,这样我们就无法在几个视窗之间来切换到这个窗口了。

使用JWindow也是很多人知道的一种去掉标题栏的方式。但从Java1.4开始,有一种新的方式可以使用,我们来看看。

现在我们创建一个类并继承于JFrame, 
public class DecoratedFrame extends JFrame { 
public DecoratedFrame() { 
  this.getContentPane().add(new JLabel("Just a test.")); 
  this.setUndecorated(true); // 去掉窗口的装饰 
  this.getRootPane().setWindowDecorationStyle(JRootPane.NONE); //采用指定的窗口装饰风格 
  this.setSize(300,150); 

public static void main(String[] args) { 
  JFrame frame = new DecoratedFrame(); 
  frame.setVisible(true); 

}

请看加了注释的两行,要去掉标题栏,关键代码就是这两行,第1行去掉窗口的装饰,第2行为窗口指定头饰风格。在这里,可以通过调用this.getRootPane().setWindowDecorationStyle()方法为窗口指定以下的装饰风格:

NONE                  无装饰(即去掉标题栏) 
FRAME                普通窗口风格 
PLAIN_DIALOG          简单对话框风格 
INFORMATION_DIALOG    信息对话框风格 
ERROR_DIALOG          错误对话框风格 
COLOR_CHOOSER_DIALOG 拾色器对话框风格 
FILE_CHOOSER_DIALOG  文件选择对话框风格 
QUESTION_DIALOG      问题对话框风格 
WARNING_DIALOG        警告对话框风格


在使用Jframe的时候,普遍都会有标题栏,还有最小化,最大化,关闭按纽的,还要实现拖动窗体的功能。 
这样的话,对我们实现自定义样式的窗体是很有影响的,


1) 要去掉标题栏: 
jFrame.setUndecorated(true); 
// 这样就可以去掉Jframe中对window的装饰了,


2) 去掉标题栏,我们就有可能要给程序写代码提供最小化,最大化,关闭的操作,如何实现? 
只要给按纽添加MouseListener, 
在mouseClick中的调用


jFrame.setExtendedState(jFrame.ICONIFIED); //最小化


if(jFrame.getExtendedState() != jFrame.MAXIMIZED_BOTH) 
jFrame.setExtendedState(jFrame.MAXIMIZED_BOTH); 
else 
jFrame.setExtendedState(jFrame.NORMAL); 
// 最大化或正常状态


System.exit(0); 
// 关闭,退出程序


3) 要拖动窗体的功能: 
只要给窗体中的某个组件添加如下代码就行了:

  Point loc = null;
  Point tmp = null;
  boolean isDragged = false;
    private void setDragable() {
      this.addMouseListener(new  java.awt.event.MouseAdapter() {
          public void  mouseReleased(java.awt.event.MouseEvent e) {
              isDragged =  false;
              jFrame.setCursor(new  Cursor(Cursor.DEFAULT_CURSOR));
          }
          public void  mousePressed(java.awt.event.MouseEvent e) { 
            tmp = new  Point(e.getX(), e.getY());
              isDragged = true;
              jFrame.setCursor(new Cursor(Cursor.MOVE_CURSOR));
          }        });
      this.addMouseMotionListener(new  java.awt.event.MouseMotionAdapter() { 
          public void  mouseDragged(java.awt.event.MouseEvent e) {
              if(isDragged)  {
                  loc = new Point(jFrame.getLocation().x + e.getX() -  tmp.x,                    jFrame.getLocation().y + e.getY() -  tmp.y);
                  jFrame.setLocation(loc);
              }
          }
      });

在初始化该组件的时候调用 setDragable()  就可以使组件具体拖放窗体的功能了。因为可能有背景图,可能会重写paint方法,不能在paint方法中调用setDragable()

http://www.linuxidc.com/Linux/2013-08/89321.htm

 

相关文章
|
JavaScript Java
【Java】监听jframe窗口大小改变函数:addComponentListener
【Java】监听jframe窗口大小改变函数:addComponentListener
245 0
|
数据可视化 Java
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
如果要在某一个界面里面添加功能的话,都在一个类中,会显得代码难以阅读,而且修改起来也会很困难,所以我们将游戏主界面、登录界面、以及注册界面都单独编成一个类,每一个类都继承JFrame父类,并且在类中创建方法来来实现页面
456 0
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
|
Java API 容器
Java实现拼图小游戏(3)—— 添加图片(含JFrame源码阅读)
用法:可以简单记忆为JLabel是一个管理容器,创建对象以后管理括号内的东西。比如上面我们新建了一个对象icon,应该被放入到JLabel容器中,所以括号内传递的参数就是icon
371 0
Java实现拼图小游戏(3)—— 添加图片(含JFrame源码阅读)
|
Java 图形学 索引
Java实现雪景图-Java的Jframe/Jpanel
Java实现雪景图-Java的Jframe/Jpanel
Java实现雪景图-Java的Jframe/Jpanel
|
Java
编写Java程序,使用JFrame创建一个窗体
编写Java程序,使用JFrame创建一个窗体
422 0
编写Java程序,使用JFrame创建一个窗体
|
Java 容器 数据可视化
JAVA学习中Swing概述中的JFrame学习
package com.swing;import java.awt.Color;import java.awt.Container;import java.awt.event.WindowAdapter;import javax.
1089 0
|
Java
如何在Java中JFrame中添加音乐
File musicFile=new File("所要添加的音乐名");URI uri=musicFile.toURI();URL url=uri.toURL():AudioClip=Applet.newAudioClip(url);控制音乐的播放与停止clip.
1477 0