图形用户界面设计

图形用户界面设计

布局与事件

一.布局

1.流式布局FlowLayout
package com.HSY.Java_Windows;

import java.awt.*;

public class Java_Windows extends Frame
{
    public Java_Windows()
    {
        super("SIMS");//窗口标题
        setSize(200,150);//分别设置宽度和高度
        setLayout(new FlowLayout());//设置布局
        add(new Button("Student"));//添加界面按钮
        add(new Button("Teacher"));
        add(new Button("Manage"));
        add(new Button("Exit"));
        setVisible(true);//设置窗口为可视的
    }
}

----------------------------------------------------------------------

package com.HSY.Test;

import com.HSY.Java_Windows.Java_Windows;

public class Test
{
    public static void main(String[] args)
    {
        Java_Windows a = new Java_Windows();
    }
}

运行结果:

2.边界布局BorderLayout
package com.HSY.Java_Windows;

import java.awt.*;

public class Java_Windows extends Frame
{
    public Java_Windows()
    {
        super("SIMS");
        setSize(200,150);
        setLayout(new BorderLayout(1010));//设置水平间距,竖直间距
        add("West",new Button("Student"));
        add("North",new Button("Teacher"));
        add("East",new Button("Mange"));
        add("South",new Button("Exit"));
        //每个区域只能放一个组件若要放两个以上的组件,需要使用面板(容器嵌套)
        setVisible(true);
    }
}

----------------------------------------------------

package com.HSY.Test;

import com.HSY.Java_Windows.Java_Windows;

public class Test
{
    public static void main(String[] args)
    {
        Java_Windows a =new Java_Windows();
    }
}

运行结果:

3.网格布局GridLayout
package com.HSY.Java_Windows;

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

public class Java_Windows extends Frame
{
    public Java_Windows()
    {
        super("SIMS");
        setSize(200,150);
        setLayout(new GridLayout(4,1,0,10));//行数,列数,水平间距,竖直间距
        add(new JButton("学生"));//javax.swing包中的 JButton() 方法支持中文输入
        add(new JButton("教师"));
        add(new JButton("管理员"));
        add(new JButton("退出"));
        //各组件的排列方式:从上到下,从左到右
        //与BorderLayout类似,如果想要在一个网格单元中添加多个组件
        //必须先在网格单元放一个容器,再将多个组件放在该容器中
        setVisible(true);
    }

}

---------------------------------------------------

package com.HSY.Test;

import com.HSY.Java_Windows.Java_Windows;

public class Test
{
    public static void main(String[] args)
    {
        Java_Windows a = new Java_Windows();
    }
}

运行结果:

4.卡片布局CardLayout
package Java_Windows;

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

public class Java_Windows extends Frame
{
    public Java_Windows()
    {
        super("SIMS");
        setSize(300,200);
        setLayout(new CardLayout(50,50));//水平间距,竖直间距
        add(new JButton("学生"));
        //与BorderLayout和GridLayout类类似,每张卡片中只能放一个组件
        //如果想要在一张卡片放置多个组件
        //必须先在卡片放一个容器,再将多个组件放在该容器中
        //所以下面三行代码是无效的
        add(new JButton("教师"));
        add(new JButton("管理员"));
        add(new JButton("退出"));
        setVisible(true);
    }
}

-------------------------------------------------------------

package Test;

import Java_Windows.Java_Windows;

public class Test
{
    public static void main(String[] args)
    {
        Java_Windows a = new Java_Windows();
    }
}

运行结果:

二、事件

1.事件监听器及其抽象方法[ (L) = 低级事件,(s) = 语义事件]
接口包含的方法
ActionListener(S)actionPerformed
ItemListener(S)itemStateChanged
WindowListener(L)windowClosing,windowOpened,windowIconified,windowDeiconified,windowClosed,windowActivated,windowDeactivated
CompoenentListener(L)componentMoved,componentHidden,componentResized,componentShown
AdjustmentListener(S)adjustmentValueChanged
MouseMotionListener(L)mouseDragged,mouseMoved
MouseListener(L)mousePressed,mouseReleased,mouseEntered,mouseExited,mouseClicked
KeyListener(L)keyPressed,keyReleased,keyTyped
FocusListener(L)focusGained,focusLost
ContainerListener(L)componentAdded,componentRemoved
TextListener(S)TextValueChanged
2.事件适配器
//利用成员内部类实现事件监听

package com.HSY.Java_Windows;

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

public class Java_Windows
{
    private Frame frame;
    private TextArea area;
    private TextField field;
    private Button buttonEnter;

    public Java_Windows()
    {
        frame = new Frame("SIMS");
        area = new TextArea(10,30);
        area.setFont(new Font("Times New Roman",Font.BOLD,14));//设置字体,风格,字号
        area.setEditable(false);
        field = new TextField(26);
        buttonEnter = new Button("send");
    }

    private void init()
    {
        Panel panelCenter = new Panel();
        panelCenter.add(area);
        Panel panelSouth = new Panel();
        panelSouth.add(field);
        panelSouth.add(buttonEnter);
        frame.add(panelCenter,BorderLayout.CENTER);
        frame.add(panelSouth,BorderLayout.SOUTH);
    }

    private class TextButtonActionHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            area.append(area.getName() + "\n");
            field.setText("");
        }
    }

    private void addEventHandler()
    {
        buttonEnter.addActionListener(new TextButtonActionHandler());
        field.addActionListener(new TextButtonActionHandler());
    }

    public void showMe()
    {
        init();
        addEventHandler();
        frame.pack();
        frame.setVisible(true);
    }

}

------------------------------------------------------
  
package com.HSY.Test;

import com.HSY.Java_Windows.Java_Windows;

public class Test
{
    public static void main(String[] args)
    {
        new Java_Windows().showMe();
    }
}

运行结果:

java.awt包


学习来源:来源一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值