bestlong 怕失憶論壇
標題:
Java Swing 之 JFrame 視窗相關操作
[打印本頁]
作者:
bestlong
時間:
2007-11-27 13:30
標題:
Java Swing 之 JFrame 視窗相關操作
如果經常使用可以用一個函數處理如下:
public void setWindow(String Title, String image, int SizeX, int SizeY)
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //退出方式
setTitle(Title); //標題名稱
ImageIcon ico = new ImageIcon(image); //圖標創建("當前程式目錄下儲存圖片的檔案名/圖片名.gif或.jpg")//"image/Title.gif"
setIconImage(ico.getImage()); //圖標設定
setSize(SizeX, SizeY); //設定視窗大小
setLocationRelativeTo(this); //設定視窗初始位置在螢幕中心
setResizable(true); //設定視窗大小可變
setExtendedState(JFrame.MAXIMIZED_BOTH); //設定最大化顯示
setVisible(true); //設定視窗可見
}
複製代碼
作者:
bestlong
時間:
2007-11-27 13:49
若是想要建立一個全螢幕、總是在最前面、沒有邊框、沒有標題列,並且切換不出去,也不能移動或最小化的視窗
寫一個 class 繼承自 JFrame 在建構函數中寫下列程式
this.setExtendedState(JFrame.MAXIMIZED_BOTH); //最大化
this.setAlwaysOnTop(true); //總在最前面
this.setResizable(false); //不能改變大小
this.setUndecorated(true); //不要邊框
複製代碼
接下來是處理事件部分,需要關心的事件是 windowLostFocus 和 windowIconified (最小化)
public void this_windowLostFocus(WindowEvent e)
{
this.requestFocus();
this.setLocation(0,0);
}
public void this_windowIconified(WindowEvent e)
{
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
複製代碼
作者:
bestlong
時間:
2007-11-27 14:16
Full-screen
GraphicsDevice myDevice;
Window myWindow;
try {
myDevice.setFullScreenWindow(myWindow);
...
}
finally {
myDevice.setFullScreenWindow(null);
}
複製代碼
作者:
bestlong
時間:
2007-11-27 15:02
如何改變 JFrame 標題列的顯示方法
我们在使用的程序通常標題列上有三个按鈕,最大化,最小化與關閉。
但是有时候我們只需要顯示其中一個或者不需要。下面的程式就可以達到這個目的。
/**
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: Completesolution Solution(GD) Company</p>
* @author Jason
* @version 1.0
*/
/**
* 请看加了注释的两行,要改变标题栏的显示状态,
* 关键代码就是这两行,第1行去掉窗口的装饰,
* 第2行为窗口指定头饰风格。
* 方法为窗口指定以下的装饰风格:
* NONE 无装饰(即去掉标题栏)
FRAME 普通窗口风格
PLAIN_DIALOG 简单对话框风格
INFORMATION_DIALOG 信息对话框风格
ERROR_DIALOG 错误对话框风格
COLOR_CHOOSER_DIALOG 拾色器对话框风格
FILE_CHOOSER_DIALOG 文件选择对话框风格
QUESTION_DIALOG 问题对话框风格
WARNING_DIALOG 警告对话框风格
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DecoratedFrame extends JFrame
{
public DecoratedFrame()
{
JLabel lbl = new JLabel("視窗風格測試");
lbl.setAlignmentX(Component.RIGHT_ALIGNMENT);
lbl.setVerticalAlignment(SwingConstants.CENTER);
this.getContentPane().add(lbl);
this.setUndecorated(true); // 去掉視窗的裝飾
//采用指定的窗口装饰风格
this.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG );
this.setSize(300,150);
}
public static void main(String[] args)
{
JFrame frame = new DecoratedFrame();
frame.setVisible(true);
}
}
複製代碼
作者:
bestlong
時間:
2009-7-27 14:58
讓 JFrame 顯示在螢幕中心
舊的方式
frame.setSize(640,480);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension size = frame.getSize();
int x = (screenSize.width - size.width) / 2;
int y = (screenSize.height - size.height) / 2;
frame.setLocation( x, y );
frame.setVisible(true);
複製代碼
新的方式
frame.setSize(640,480);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
複製代碼
歡迎光臨 bestlong 怕失憶論壇 (http://www.bestlong.idv.tw/)
Powered by Discuz! X1.5