Java
JFrame可以实现本地实例化窗口,通过向JFrame添加各种控件,实现各种相应的功能。
一、创建窗口实例
JFrame myFrame = new JFrame();
二、设置JFrame的各种属性
myFrame.setLayout(new BorderLayout());
---设置窗口中组件的排列方式
myFrame.setTitle("窗口标题"); --设置窗口的标题
myFrame.setLocation(x,y); --设置窗口的显示位置
myFrame.setSize(x,y);设置窗口大小
三、实例
import
java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import
javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class MyQQJFrame extends
JFrame implements WindowListener{
private Toolkit toolkit;
//窗口起点
private int x;
private int y;
//窗口大小
private int height;
private int width;
private JPanel jp;
private JPanel jp1;
private JPanel jp2;
private JPanel jp3;
public int
getX() {
return x;
}
public void
setX(int x) {
this.x = x;
}
public int
getY() {
return y;
}
public void
setY(int y) {
this.y = y;
}
public int
getHeight() {
return height;
}
public void
setHeight(int height) {
this.height = height;
}
public int
getWidth() {
return width;
}
public void
setWidth(int width) {
this.width = width;
}
public void
init(){
//设置窗口基本属性(大小,位置,标题,图标等)
setBasicProperty();
//生成四个面板。 newJpanel(); //设置主面板为Flowlayout布局
setMajorPanel(); //设置jp1面板为Flowlayout布局,并实现其详细布局
setJp1();
//设置jp2面板为Gridlayout (3*3)
布局
setJp2();
//设置jp3面板为flowlayout布局。
setJp3();
//设置中间3*3 的 详细布局
Center();
//底层 的详细布局
South();
//把jp1,jp2,jp3,三个面板放入主面板jp中。
addJPanel(); this.addWindowListener(this);
//设置窗口可见性
this.setVisible(true);
}
protected void
newJpanel() {
//new 4个面板
,jp为主面板,jp1,jp2,jp3,依次为放置在jp面板上方,中间,底层的三个面板
jp=new JPanel();
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
}
protected void
setBasicProperty() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置大小
this.setX(400);
this.setY(250);
this.setSize(this.getX(), this.getY());
//设置自定义居中显示
this.setCenterLocation();
//设置标题
this.setTitle("QQ");
//设置图标
this.setIconImage(new
ImageIcon("Image_src\\QQ.jpg").getImage());
}
protected void
setJp3() {
FlowLayout flowLayout=new
FlowLayout();
flowLayout.setHgap(35);
jp3.setLayout(flowLayout);
}
protected void
setJp2() {
GridLayout g2=new GridLayout(3,
3);
g2.setHgap(5);
g2.setVgap(5);
jp2.setLayout(g2);
}
protected void
setJp1() {
JLabel jl=new JLabel();
jl.setIcon(new
ImageIcon("Image_src\\QQtitle.jpg"));
jp1.add(jl);
}
protected void
setMajorPanel() {
// BorderLayout
BorderLayout1=new BorderLayout();
// BorderLayout1.setVgap(5);
// this.setLayout(BorderLayout1);
this.setContentPane(jp);
}
protected void
addJPanel() {
jp.add(jp1,
BorderLayout.NORTH);
jp.add(jp2,
BorderLayout.CENTER);
jp.add(jp3,
BorderLayout.SOUTH);
}
protected void
South() {
//把3个控件依次加入jp3面板
jp3.add(new
JButton("登陆"));
jp3.add(new
JButton("取消"));
jp3.add(new
JButton("注册向导"));
}
protected void
Center() {
JLabel j21=new
JLabel(); j21.setText("QQ号码");
JLabel j24=new
JLabel(); j24.setText("QQ密码");
JTextField jtf=new
JTextField();
JPasswordField jpf=new
JPasswordField(7);
//把9个控件依次加入jp2面板
jp2.add(j21);
jp2.add(jtf);
jp2.add(new
JButton("申请号码"));
jp2.add(j24);
jp2.add(jpf);
jp2.add(new
JButton("忘记密码")); jp2.add(new
JCheckBox("隐身登陆"));
jp2.add(new
JCheckBox("记住密码"));
jp2.add(new
JButton("申请密码保护"));
}
private void
setCenterLocation() {
this.toolkit=Toolkit.getDefaultToolkit();
Dimension
dimension=toolkit.getScreenSize();
this.width=(int)dimension.getWidth();
this.height=(int)dimension.getHeight();
this.width=(this.width-this.x)/2;
this.height=(this.height-this.y)/2;
this.setLocation(this.width,
this.height);
}
@Override
public void windowOpened(WindowEvent e) {
System.out.println("windowOpened 窗口首次变为可见时调用。");
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing
用户试图从窗口的系统菜单中关闭窗口时调用。");
System.out.println(e.paramString());
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("windowClosed 因对窗口调用 dispose 而将其关闭时调用。");
}
@Override
public void windowIconified(WindowEvent e)
{
System.out.println("windowIconified 窗口从正常状态变为最小化状态时调用。");
if(SystemTray.isSupported()){
final
SystemTray tray=SystemTray.getSystemTray();
Image
image=new ImageIcon("Image_src\\27.jpg").getImage();
// MouseListener1
ml=new MouseListener1();
//System.out.println(e.getSource().toString());
PopupMenu pop = new PopupMenu(); //增加托盘右击菜单
MenuItem show = new MenuItem("还原");
MenuItem exit = new MenuItem("退出");
final TrayIcon trayIcon=new TrayIcon(image, "Tray Demo",
pop);
show.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { // 按下还原键
tray.remove(trayIcon);
MyQQJFrame.this.setVisible(true);
MyQQJFrame.this.setExtendedState(JFrame.NORMAL);
MyQQJFrame.this.toFront();
}
});
exit.addActionListener(new ActionListener() { // 按下退出键
public void actionPerformed(ActionEvent e) {
tray.remove(trayIcon);
System.exit(0);
}
});
pop.add(show);
pop.add(exit);
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(new
MouseAdapter() {
public void mouseClicked(MouseEvent e) { // 鼠标器双击事件
if (e.getClickCount() == 2) {
tray.remove(trayIcon); // 移去托盘图标
MyQQJFrame.this.setVisible(true);
MyQQJFrame.this.setExtendedState(JFrame.NORMAL); // 还原窗口
MyQQJFrame.this.toFront();
}
}
});
try {
tray.add(trayIcon);
} catch
(AWTException e1) {
//
TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public void windowDeiconified(WindowEvent e)
{
System.out.println("windowDeiconified 窗口从最小化状态变为正常状态时调用。 ");
}
public void windowActivated(WindowEvent e)
{
System.out.println("windowActivated
将 Window 设置为活动 Window 时调用。");
}
public void windowDeactivated(WindowEvent e)
{
System.out.println("windowDeactivated 当 Window 不再是活动 Window 时调用。");
}
}
TestMyQQJFrame类:
public class TestMyQQJFrame {
public static void main(String[] args) {
MyQQJFrame qq=new
MyQQJFrame();
qq.init();
}
}