当前位置: 代码迷 >> 综合 >> JavaGUI 11 JDialog 弹窗
  详细解决方案

JavaGUI 11 JDialog 弹窗

热度:105   发布时间:2023-11-24 13:59:47.0

5.2 JDialog 弹窗


我们学习 很多图形化编程的时候,其实都离不开 一个东西!甚至有很多 老师,把这个东西 像 输出 helloworld 一样初始和重要!那就是 信息框(弹窗)

弹窗:是用来提示 信息用的,我们也把它 叫做 信息框!或消息盒子。


5.2.1 Swing 的 绝对布局

Swing 支持 绝对布局!即 先将 Layout 布局方式 设置为 null。
然后 在每个 组件的方法 setBounds() 这里 设置它相对于 ContentPane 的位置 和 自身的 大小。

绝对布局需要进行 x 和 y 的 计算!这个计算,现如今 可以用 QQ截图来解决。是很快 就能算出来的!

//绝对布局
container.setLayout(null);//直接不写布局方式!待会儿我们自己计算坐标绝对布局!//按钮
JButton jButton = new JButton("点击弹出一个信息框");
jButton.setBounds(30,30,200,50);
container.add(jButton);

在这里插入图片描述


5.2.2 JDialog 弹窗 的使用

JDialog 弹窗本质上 是一个 窗口!也就是说 它不是组件,而是 一个 容器。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

我们可以自定义一个子类,继承这个 叫做弹窗的窗口!或者说 我们直接就创建它。让它 显示出来!!都可以,喜欢怎么玩都行。

package com.muquanyu.lesson04;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;//主窗口
public class DialogDemo extends JFrame {
    public DialogDemo(){
    this.setVisible(true);this.setSize(700,500);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);Container container = this.getContentPane();//绝对布局container.setLayout(null);//直接不写布局方式!待会儿我们自己计算坐标绝对布局!//按钮JButton jButton = new JButton("点击弹出一个信息框");jButton.setBounds(30,30,200,50);container.add(jButton);jButton.addActionListener(new ActionListener() {
    @Overridepublic void actionPerformed(ActionEvent e) {
    //弹窗也是个 窗体非常简单JDialog jDialog = new JDialog();jDialog.setTitle("我是一个信息框");jDialog.setSize(500, 500);jDialog.add(new JLabel("Hello World !"));jDialog.setVisible(true);//MyDialogDemo m = new MyDialogDemo();}});}public static void main(String[] args) {
    DialogDemo dialogDemo = new DialogDemo();}}//弹窗的窗口
class MyDialogDemo extends JDialog{
    public MyDialogDemo(){
    this.setVisible(true);this.setBounds(100,100,500,500);//this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);Container container = this.getContentPane();container.setLayout(null);JLabel label = new JLabel("HelloWorld!");label.setBounds(100,100,200,20);Font font = new Font("宋体",Font.BOLD,18);label.setFont(font);container.add(label);}
}

它实际上 就是个 窗体,跟 Frame 很多地方都是 同理的,所以根本不需要讲解。看看代码就行了。
在这里插入图片描述