JAVA图形化界面(入门笔记)

JAVA图形化界面(入门笔记)

创建Window

import java.awt.*;

public class WindowDemo {
    public static void main(String[] args) {
        //创建一个窗口对象
        Frame frame=new Frame("通讯录管理系统");

        //指定窗口的位置与大小
        frame.setLocation(1001,100);
        frame.setSize(500,300);

        //设置窗口对象可见
        frame.setVisible(true);
    }
}

操作后的结果
在这里插入图片描述
创建Panel

import java.awt.*;

public class PanelDemo {
    public static void main(String[] args) {
       //创建一个window对象
        Frame frame=new Frame("通讯录管理系统");


        //创建一个panel对象
        Panel p=new Panel();

        //创建一个文本框和一个按钮,并且把它们放在Panle容器中
        p.add(new TextField("这里是一个测试文本"));
        p.add(new Button("这里是一个测试按钮"));


        //把panel放在window中
        frame.add(p);


        //设置window的大小,位置
        frame.setBounds(100,100,500,300);



        //设置window可见
        frame.setVisible(true);
        
    }
    
}

运行结果
在这里插入图片描述创建ScrollPane

import java.awt.*;

public class ScrollPaneDemo {
    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");

        //创建一个ScrollPane对象
        ScrollPane sp=new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);

        //往ScrollPane中添加内容
        sp.add(new TextField("这是一个测试文本"));
        sp.add(new Button("这是一个测试按钮"));

        //把ScrollPane添加到Frame中
        frame.add(sp);
        
        frame.setBounds(100,100,500,300);

        frame.setVisible(true);

    }
}

在这里插入图片描述
FlowLayout

import java.awt.*;

public class FlowLayoutDemo {
    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");

        //通过setLayout方法设置容器的布局管理器
        frame.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));//当遇到障碍物时,会从下一行的左边从头开始

        //添加多个按钮到frame中
        for(int i=1;i<=100;i++){
            frame.add(new Button("按钮"+i));
        }

        //设置最佳大小,用pack方法
        frame.pack();
        
        frame.setVisible(true);

    }
}

运行结果
在这里插入图片描述

BorderLayout

import java.awt.*;

public class BoderLayoutDemo {

    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");
        //给frame设置BoderLayout布局管理器

        frame.setLayout(new BorderLayout(30,10));

        //给frame区域添加组件
        frame.add(new Button("北侧按钮"),BorderLayout.NORTH);
        frame.add(new Button("南侧按钮"),BorderLayout.SOUTH);
        frame.add(new Button("东侧按钮"),BorderLayout.EAST);
        frame.add(new Button("西侧按钮"),BorderLayout.WEST);
        frame.add(new Button("西侧按钮"),BorderLayout.CENTER);
        
        frame.pack();

        frame.setVisible(true);
    }
}

运行结果
在这里插入图片描述
GridLayout布局管理器

import java.awt.*;

public class GridLayoutDemo {

    public static void main(String[] args) {
        Frame frame=new Frame("计算器");
        //创建一个Panel对象,里面存放一个TextField组件

        Panel p1=new Panel();
        p1.add(new TextField(30));
        //将该Panel添加到frame中去
        frame.add(p1,BorderLayout.NORTH);

        //创建一个Panel对象,里面存放布局管理器GridLayout

        Panel p2=new Panel();
        p2.setLayout(new GridLayout(3,5,4,4));
        for(int i=0;i<10;i++){
            p2.add(new Button(i+""));
        }
        p2.add(new Button("+"));
        p2.add(new Button("-"));
        p2.add(new Button("*"));
        p2.add(new Button("/"));
        p2.add(new Button("="));


        //将该布局管理器添加到frame中去'
        frame.add(p2);

        frame.pack();
        frame.setVisible(true);

    }
}

运行结果在这里插入图片描述
CardLayout

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CardLayoutDemo {

    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");
        //创建一个Panel,用来存储多张卡片
        Panel p1=new Panel();

        //创建CardLayout对象,并且将该对象设置给之前创建的对象
        CardLayout cardlayout=new  CardLayout();
        p1.setLayout(cardlayout);

        //往Panel中存储多个组件
        String[] names={"第一张","第二张","第三张","第四张","第五张"};
        for(int i=0;i<5;i++){
            p1.add(names[i],new Button(names[i]));
        }

        //把Panel 放在frame的中间区域
        frame.add(p1);
        //创建另一个Panel p2,用来存储多个按钮组件
        Panel p2=new Panel();


        //创建5个按钮组件
       Button b1=new Button("上一张");
       Button b2=new Button("下一张");
       Button b3=new Button("第一张");
       Button b4=new Button("最后一张");
       Button b5=new Button("第三张");


        //创建一个事件监听器,监听按钮的点击动作
        ActionListener listener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actionCommand=e.getActionCommand();
                switch(actionCommand){
                    case "上一张":
                        cardlayout.previous(p1);
                        break;
                    case "下一张":
                        cardlayout.next(p1);
                        break;
                    case "第一张":
                        cardlayout.first(p1);
                        break;
                    case"最后一张":
                        cardlayout.last(p1);
                        break;
                    case "第三张":
                        cardlayout.show(p1,"第三张");
                        break;
                }
            }
        };

        //把该事件监听器与按钮捆绑在一起
        b1.addActionListener(listener);
        b2.addActionListener(listener);
        b3.addActionListener(listener);
        b4.addActionListener(listener);
        b5.addActionListener(listener);

        //把按钮添加到容器Panel中去
        p2.add(b1);
        p2.add(b2);
        p2.add(b3);
        p2.add(b4);
        p2.add(b5);
        //把p2放在frame的南边区域
        frame.add(p2,BorderLayout.SOUTH);
        
        frame.pack();
        frame.setVisible(true);

    }
}

运行解雇
在这里插入图片描述
BoxLayout布局管理器1

import javax.swing.*;
import java.awt.*;

public class BoxLayoutDemo {
    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");

        //基于frame容器,创建一个BoxLayout对象,并且,该对象存放组件是垂直存放
        BoxLayout boxlayout=new BoxLayout(frame,BoxLayout.Y_AXIS);

        //把BoxLayout对象设置给frame
        frame.setLayout(boxlayout);


        //往frame中添加两个按钮组件
        frame.add(new Button("按钮1"));
        frame.add(new Button("按钮2"));


        frame.pack();
        frame.setVisible(true);
    }
}

在这里插入图片描述
BoxLayout布局管理器2

import javax.swing.*;
import java.awt.*;

public class BoxLayoutDemo2 {
    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");

        //创建一个水平排列的组件的Box容器
        Box hBox= Box.createHorizontalBox();

        //往当前容器中添加两个按钮
        hBox.add(new Button("左按钮"));
        hBox.add(new Button("右按钮"));

        //创建一个水平排列的组件的Box容器
        Box hBox2= Box.createVerticalBox();

        //往当前容器中添加两个按钮
        hBox2.add(new Button("上按钮"));
        hBox2.add(new Button("下按钮"));

        //把两个Box容器添加到Frame中
        frame.add(hBox,BorderLayout.NORTH);
        frame.add(hBox2);

        frame.pack();
        frame.setVisible(true);
    }
}

在这里插入图片描述
BoxLayout布局管理器3

import javax.swing.*;
import java.awt.*;

public class BoxLayoutDemo3 {
    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");

        //创建水平排列的Box容器hBox
        Box hBox= Box.createHorizontalBox();

        //往hBox容器中添加按钮,还需要在多个按钮之间添加分割
        hBox.add(new Button("左按钮"));
        hBox.add(Box.createHorizontalGlue());
        hBox.add(new Button("右按钮"));
        hBox.add(Box.createHorizontalStrut(30));
        hBox.add(new Button("中间按钮"));

        //创建垂直排列的Box容器vBox
        Box vBox=Box.createVerticalBox();


        //往vBox容器中添加按钮,还需要在多个按钮之间添加分割
        vBox.add(new Button("上按钮"));
        vBox.add(Box.createVerticalGlue());
        vBox.add(new Button("中间按钮"));
        vBox.add(Box.createVerticalStrut(30));
        vBox.add(new Button("下按钮"));

        //把Box容器添加到frame中
        frame.add(hBox,BorderLayout.NORTH);
        frame.add(vBox);

        frame.pack();
        frame.setVisible(true);
    }
}

按钮之间添加了分割

在这里插入图片描述
awt常用基本组件测试

import javax.swing.*;
import java.awt.*;

public class BasicComponentDemo {
    Frame frame=new Frame("这是一个简单的测试");

    TextArea ta=new TextArea(5,20);  //对应顶部的文本域,括号中的参数用来设置大小
    Choice colorChooser=new Choice();  //对应颜色的选择按钮
    CheckboxGroup chg=new CheckboxGroup();//CheckboxGroup对象用于形成一组复选框,其中只有一个复选框可以处于打开状态,而所有其他复选框必须处于关闭状态。
    Checkbox male=new Checkbox("男",chg,true);
    Checkbox female=new Checkbox("女",chg,true);
    Checkbox isMarried=new Checkbox("是否已婚?");
    TextField tf=new TextField(20); //对应底部的文本框,并且长度设置为20

    Button ok=new Button("确认"); //底部的确定按钮
    List colorList=new List(6,true);  //对应顶部右边的颜色列表

    public void init(){
        //组装底部
        Box bBox= Box.createHorizontalBox();
        bBox.add(tf);
        bBox.add(ok);

        //组装选择部分
        colorChooser.add("红色");
        colorChooser.add("蓝色");
        colorChooser.add("绿色");
        Box cBox=Box.createHorizontalBox();
        cBox.add(colorChooser);
        cBox.add(male);
        cBox.add(female);
        cBox.add(isMarried);

        //组装文本域与选择部分
        Box topLeft=Box.createVerticalBox();
        topLeft.add(ta);
        topLeft.add(cBox);

        //组装顶部左边与列表框
        colorList.add("红色");
        colorList.add("绿色");
        colorList.add("蓝色");
        Box top=Box.createHorizontalBox();
        top.add(topLeft);
        top.add(colorList);

        //组装界面
        frame.add(bBox,BorderLayout.SOUTH);
        frame.add(top);
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        new BasicComponentDemo().init();
    }
}

测试结果

在这里插入图片描述
Dialog
Dialog是Window的子类,是一个容器类,属于特殊的组件。对话框是可以独立存在的顶级窗口,因此用法与普通窗口的用法几乎完全一致,但是使用对话框需要注意一下两点:
1.对话框通常依赖于其他窗口,就是通常需要有一个父窗口
2.对话框有非模式和模式两种,当某个模式的对话框被打开后,该模式对话框总是位于它的父窗口之上,在模式对话框被关闭之前,父窗口无法获得焦点。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DialogDemo {

    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");
        //创建两个对话框Dialog,一个是模式的,一个是非模式的
        Dialog d1=new Dialog(frame,"模式对话框",true);
        Dialog d2=new Dialog(frame,"非模式对话框",false);

        //通过setBounds方法设置Dialog的位置与大小
        d1.setBounds(20,30,500,300);
        d2.setBounds(20,30,500,300);

        //创建两个按钮
        Button b1=new Button("打开模式对话框");
        Button b2=new Button("打开非模式对话框");

        //给这两个按钮添加点击后的行为
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                d1.setVisible(true);
            }
        });
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                d2.setVisible(true);
            }
        });

        //把按钮添加到frame中去
        frame.add(b1,BorderLayout.NORTH);
        frame.add(b2);

        frame.pack();
        frame.setVisible(true);
    }
}

在这里插入图片描述
在Dialog对话框中添加内容

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DialogDemo {

    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");
        //创建一个对话框Dialog,一个是模式的,一个是非模式的
        Dialog d1=new Dialog(frame,"模式对话框",true);

        //通过setBounds方法设置Dialog的位置与大小
        d1.setBounds(20,30,500,300);

        //创建一个Box,用来存放一个文本区域与一个按钮
        Box vBox=Box.createVerticalBox();
        vBox.add(new TextField());
        vBox.add(new Button("确定"));

        //将常见的文本框放在对话框Dialog中
        d1.add(vBox);


        //创建已个按钮
        Button b1=new Button("打开模式对话框");


        //给这一个按钮添加点击后的行为
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                d1.setVisible(true);
            }
        });

        //把按钮添加到frame中去
        frame.add(b1,BorderLayout.NORTH);

        frame.pack();
        frame.setVisible(true);
    }
}

在这里插入图片描述
FileDiolg

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class FileDialogTest {
    public static void main(String[] args) {
        Frame frame=new Frame("通讯录管理系统");

        //创建两个FileDialog对象
        FileDialog  f1=new FileDialog(frame,"选择要打开的文件",FileDialog.LOAD);
        FileDialog  f2=new FileDialog(frame,"选择要保存的文件",FileDialog.SAVE);


        //创建两个按钮
        Button b1=new Button("打开文件");
        Button b2=new Button("保存文件");


        //给这两个按钮设置点击后的行为,获取打开或者保存的路径名
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                f1.setVisible(true);

                String director=f1.getDirectory();
                String file=f1.getFile();
                System.out.println("打开的文件路径为:"+director);
                System.out.println("打开的文件名称为:"+file);
            }
        });
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                f2.setVisible(true);

                String director=f2.getDirectory();
                String file=f2.getFile();
                System.out.println("保存的文件路径为:"+director);
                System.out.println("保存的文件名称为:"+file);
            }
        });
        //把按钮添加到Frame中、
        frame.add(b1,BorderLayout.NORTH);
        frame.add(b2);
        frame.pack();
        frame.setVisible(true);
    }

}

在这里插入图片描述
消息机制的举例应用

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class EventDemo {
    public static void main(String[] args) {
        new EventDemo().init();
    }
    public void init(){
        Frame frame=new Frame("事件处理机制测试");

        TextField tf=new TextField(20);
        Button b=new Button("确定");

        b.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("ok按钮被点击了");
                tf.setText("HelloWorld");
            }
        });
        frame.add(tf,BorderLayout.NORTH);
        frame.add(b);
        
        frame.pack();
        frame.setVisible(true);

    }
}

在这里插入图片描述
时间处理机制

import javax.swing.*;
import javax.swing.text.TextAction;
import java.awt.*;
import java.awt.event.*;

public class ListenerDemo {
    public static void main(String[] args) {
        Frame frame=new Frame("测试监听器");

        TextField tf=new TextField(30);

        Choice names=new Choice();
        names.add("小红");
        names.add("小明");
        names.add("小强");

        //给文本添加TextListener,监听内容的变化

        tf.addTextListener(new TextListener() {
            @Override
            public void textValueChanged(TextEvent e) {
                String text=tf.getText();
                System.out.println("当前文本框中的内容为:"+text);
            }
        });

        //给下拉选择框添加ItemListener,监听条目选向的变化


        names.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                Object item=e.getItem();
                System.out.println("当前选选择的条目为:"+item);
            }
        });

        //给frame注册ContainerListener监听器,监听容器中组件的变化


        frame.addContainerListener(new ContainerListener() {
            @Override
            public void componentAdded(ContainerEvent e) {
                Component child=e.getChild();
                System.out.println("frame中添加了:"+child);
            }

            @Override
            public void componentRemoved(ContainerEvent e) {

            }
        });
        Box hBox= Box.createHorizontalBox();
        hBox.add(names);
        hBox.add(tf);
        frame.add(hBox);
        frame.pack();
        frame.setVisible(true);
    }
}

在这里插入图片描述
时间处理机制

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class ListenerDemo2 {


    public static void main(String[] args) {
        Frame frame=new Frame("这里是测试WindowListener");

        frame.setBounds(200,200,500,500);

        //设置WindowListener,监听用户点击X的动作,如果点击X,则关闭窗口
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e){
                //停止当前程序
                System.exit(0);
            }
        });

       // frame.pack();
        frame.setVisible(true);
    }
}

点击x按钮后,该界面就会取消
在这里插入图片描述
菜单组件基本使用

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

public class SimpleMenu {

        //创建窗口
    private Frame frame=new Frame("这里是测试菜单相关组件");

        //创建菜单条
    MenuBar menubar=new MenuBar();

        //创建菜单组件

    Menu fileMenu=new Menu("文件");
    Menu editMenu=new Menu("编辑");
    Menu formatMenu=new Menu("格式");

        //创建菜单项组件
    MenuItem auto=new MenuItem("自动换行");
    MenuItem copy=new MenuItem("复制");
    MenuItem paste=new MenuItem("粘贴");

   MenuItem comment=new MenuItem("注释 Ctrl+Shift+Q",new MenuShortcut(KeyEvent.VK_Q,true));
    MenuItem cancelComment=new MenuItem("取消注释");

    TextArea ta=new TextArea(6,40);


    public void init(){
            //组装视图
        comment.addActionListener(new ActionListener() {
                                      @Override
                                      public void actionPerformed(ActionEvent e) {
                                          ta.append(e.getActionCommand());
                                      }
                                  });
        formatMenu.add(comment);
        formatMenu.add(cancelComment);

        editMenu.add(auto);
        editMenu.add(copy);
        editMenu.add(paste);
        editMenu.add(formatMenu);


            //组装菜单条
        menubar.add(fileMenu);
        menubar.add(editMenu);

            //把菜单条放入到frame中
        frame.setMenuBar(menubar);
        frame.add(ta);
        frame.pack();
        frame.setVisible(true);

        }

    public static void main(String[] args) {
        new SimpleMenu().init();
    }
}

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值