JFrame 和 JDialog

最近在做这个GUI桌面设计,一直没时间写,今天来看顶级容器Jframe和JDialog,所谓顶级容器,当然,这里的JFrame继承AET中的Frame。直接学JFrame。按照我个人的理解,就是一种不可以放在其他容器,用来管理或者添加组件的一个大盒子,也就是说,这是最大号的盒子,没有更大的了,你要装的东西都只能放在这里面,不可以在外面套盒子了。这个盒子就是构建交互页面的地基。

那么作为顶级容器,这个JFrame有什么用,JFrame有什么注意的地方,JFrame和JDialog有何区别,怎么使用JFrame,首先我来介绍一下如何使用JFrame。

JFrame的使用和注意项

//实例化一个窗口
JFrame frame = new JFrame("这里是窗口标题");
//设置初始尺寸和初始位置
frame.setBounts(0,0,600,300);
//设置是否可见
frame.setVisible(true);

这里的代码比较容易理解,就是建立一个Jframe窗口,使用倒是可以容易理解,那么JFrame有什么需要注意的呢,我总结了几个我遇到的问题

1.注意窗口生命周期,就是你记得用了关掉

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 程序退出
// 或 JFrame.DISPOSE_ON_CLOSE(仅关闭窗口)

2.内存管理,后面加入事件监听的时候不要忘记释放内存,这一点要牢记,我老是忘记

3.设置布局管理器,这个后面介绍,这个布局管理器和CSS中的有点像,学过CSS的基本上一天就可以弄懂基本的布局管理。

frame.setLayout(new FlowLayout()); // 或其他布局

4.可见一定要放最后!!!这里不放最后会出现一个很大的问题,就是往里面添加的组件一开始不可见,或者直接不可见。一般是尺寸,位置,可见3步走。

上面是一些基本的注意点,到后面高阶的我现在没有学,后面补,这里初学包够了,考虑这几点就行。

JFrame的构造方法和常用方法

方法生命解释
JFrame(String title)这里就是构建一个标题为title的窗口
setLocationRelativeTo(Component c)相对于C的位置,null为center
getContentPane()获取面板内容
add(Component comp)    
 
Component    添加组件到内容面板(Java5+简化版)    frame.add(new JTextField())
setDefaultCloseOperation(int operation)    
 
EXIT_ON_CLOSE<br>DISPOSE_ON_CLOSE等    设置关闭按钮行为    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
pack()计算大小,自适应
setLayout(LayoutManager manager)  
 
 LayoutManager    设置布局管理器    frame.setLayout(new FlowLayout())
setVisible(boolean)    
 
是否可见

太多了,我记不起来了,这里先用这些,后面在加,有网站可以看全面的,这里简单一点好了,主要理解思想。

这里给一个综合设施的代码,自己看,看不懂自己私信我,我很喜欢帮人的,嘿嘿

public class MainWindow {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setTitle("测试");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        panel.add(new JLabel("用户名:"));
        panel.add(new JTextField(20));
        frame.setContentPane(panel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setResizable(true);
        frame.setVisible(true);
    }
}

JDialog的使用和注意项

一样的理解,这里我理解的JDailog就是一个弹出窗口,就是你书上所谓的对话框,就是一个绑定在JFrame的一个附加弹出窗口,在提示,确认这些消息是使用

直接上使用,其实一样,这里就注意一个东西,模态,什么是模态,就是弹出了一个程序崩溃的页面,提示你要不要重新启动,这时候有你去点那个叉窗口是关闭不了的,为啥,因为这个JDialog就是模态状态 ,也就是说,模态要你先处理弹出窗口的事件,非模态可以无视风险关闭。当然,我给你一个演示一下。

import javax.swing.*;

public class Main {
    public static void main(String[] args) {

        JFrame jFrame = new JFrame("标题");
        jFrame.setSize(600,300);
        jFrame.setVisible(true);
        JDialog jDialog = new JDialog(jFrame,"窗口(模态)",true);
        jDialog.setSize(200,100);
        jDialog.setVisible(true);

    }
}

这就是一个最简单的模态窗口,你不先关JDialog你不能操作主窗口。

下面来看注意项目

1.模态设置,一般是模态

2.父子关系,理解清楚你的JDialog到底是绑定的是谁,别搞混

3.释放

4.布局,直接pack比较简单

5.数据传递,这是最重要的

6.错误提示

JDialog的构造方法和常用方法

这里我实在不想手打了,直接AI把,不知道有没有人看我的文章,有真人的话可以给我评论一下,嘿嘿,让我也体验一把这个文章作者的感觉,

方法分类方法签名说明示例
构造函数JDialog()创建无属主、非模态对话框JDialog dialog = new JDialog();
JDialog(Frame owner, String title, boolean modal)指定属主、标题和模态类型new JDialog(parent, "设置", true);
模态控制void setModal(boolean modal)设置是否阻塞父窗口(来自Dialog类)dialog.setModal(true);
void setModalityType(Dialog.ModalityType type)精细控制模态类型(Java 6+)dialog.setModalityType(ModalityType.APPLICATION_MODAL);
对话框属性void setDefaultCloseOperation(int operation)设置关闭按钮行为(继承自JFramedialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
void setUndecorated(boolean undecorated)隐藏标题栏和边框(需在显示前调用)dialog.setUndecorated(true);
内容操作Container getContentPane()获取内容容器(继承自JFramedialog.getContentPane().add(new JButton());
void setContentPane(Container contentPane)替换内容面板dialog.setContentPane(new JPanel());
显示控制void pack()根据内容自动调整窗口大小dialog.pack();
void setLocationRelativeTo(Component c)相对于组件居中(c=null时屏幕居中)dialog.setLocationRelativeTo(parent);
资源管理void dispose()释放窗口资源(继承自Window类)dialog.dispose();
父子关系Window getOwner()获取属主窗口Frame owner = (Frame) dialog.getOwner();
void setOwner(Window owner)动态设置属主窗口dialog.setOwner(newParent);
根面板操作protected JRootPane createRootPane()创建自定义根面板(可重写)@Override protected JRootPane createRootPane() { ... }

还得是AI,可见能力非常的nice,刚刚不应该自己写的。

ok,今天就到这里,继续学习,java迟早给他走一遍,有感兴趣前面的内容的吗?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值