• Java中的图形界面编程


    前言

    正文

    Java中的图形界面编程


    AWT/Swing


    AWT(Abstract Window ToolKits,抽象窗体工具集)


    1.容器类:用来存储组件,实现容器布局
    2.组件类:实现界面的一些特定功能

    一个容器能够包涵多个组件,组件必须存放在容器中
    3.布局管理器:实现容器的布局设置
    4.图形类:包含一些基本图形

    Swing是AWT的一个轻量级框架
    java.lang.Object
      java.awt.Component
          java.awt.Container
              java.awt.Window
                  java.awt.Frame
                      javax.swing.JFrame
    5.Swing中经常使用的容器
     JFrame 窗体
     JPanel 面板
     JTabbedPane    标签面板
     
    6.组件
    1) JLabel   标签

    2)JTextField 文本输入框

    3)JPasswordField password框

    4)JCheckBox 多选框

    5)JRadiobutton 单选框

    6)JButton 提交button

    7)JComboBox 下拉框

    8)JTable  表格

    9)JScrollPane 可滚面板
     

    TestJFrameDemo 窗体


    TestJPanelDemo 面板


    TestJTabbedPane 标签面板


    TestJLabelDemo 标签


    TestTextDemo 文本输入框

     


    TestCheckBox 多选框

      

    TestJTableDemo 表格


     
    TestUNEditeTable 不可编辑的表格

    表格代码演示样例

    流式布局 FlowLayout

    默认Jpanel採用的流式布局,水平方向上排列,假设一行排不下就自己主动换行显示;当仅仅有一个组将时,默认水平方向居中。

    jp.setLayOut(new FlowLayout());;设置当前面板的布局

    边界布局 BorderLayout

    1.Container getContentPane()
    Returns the contentPane object for this frame.

    Container c=jf.getContenPane();//获得jf的默认面板

    2.Container的api

    1)void setLayout(LayoutManager mgr)
    Sets the layout manager for this container.

    c.setLayout(new BorderLayout);//边框布局将面板分成五部分

    2)Component add(Component comp, int index)
    Adds the specified component to this container at the given position.

    c.add(new JButton("button1"),BorderLayout.NORTH);

    1))The code for this applet is as follows:

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

     import java.awt.*;
     import java.applet.Applet;

     public class buttonDir extends Applet {
       public void init() {
         setLayout(new BorderLayout());
         add(new Button("North"), BorderLayout.NORTH);
         add(new Button("South"), BorderLayout.SOUTH);
         add(new Button("East"), BorderLayout.EAST);
         add(new Button("West"), BorderLayout.WEST);
         add(new Button("Center"), BorderLayout.CENTER);
       }
     }
     

    网格布局 GridLayout

    1. For example, the following is an applet that lays out six buttons into three rows and two columns:


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

     import java.awt.*;
     import java.applet.Applet;
     public class ButtonGrid extends Applet {
         public void init() {
             setLayout(new GridLayout(3,2));
             add(new Button("1"));
             add(new Button("2"));
             add(new Button("3"));
             add(new Button("4"));
             add(new Button("5"));
             add(new Button("6"));
         }
     }
     2.GridLayout的api

    GridLayout(int rows, int cols)
    Creates a grid layout with the specified number of rows and columns.
    GridLayout(int rows, int cols, int hgap, int vgap)
    Creates a grid layout with the specified number of rows and columns. 第一个參数是行数,第二个參数是列数,第三个參数是行间距,第四个參数是列间距

    箱式布局 Box

    A lightweight container that uses a BoxLayout object as its layout manager。

    1.BOX的api

    1).static Box createHorizontalBox()
    Creates a Box that displays its components from left to right. 水平方向排列
    2)static Box createVerticalBox()
    Creates a Box that displays its components from top to bottom 竖直方向排列

    3)演示样例

    Box b=Box createHorizontalBox() ;

    b.add(new JButton("button1"))

    jf.add(b);

    事件

    採用了观察者模式;事件有三要素是事件源、监听器和事件。

    1.swing中的事件监听接口

    1)java.awt.event
    Interface MouseListener

    The listener interface for receiving "interesting" mouse events (press, release, click, enter, and exit) on a component

    2)java.awt.event
    Interface KeyListener

    The listener interface for receiving keyboard events (keystrokes).

    3)java.awt.event

    Interface ActionListener

    The listener interface for receiving action events

    适配器模式

    final JLabel j1=new JLabel("測试");

    JButton jb=new JButton("測试事件监听");

    jb.addMouseListener(new MouseAdapter(){

       public void mousePressed(MouseEvent e){

           j1.setText("鼠标按下");/j1必须用final修饰。

       }

    });

    总结

  • 相关阅读:
    题目1009:二叉搜索树
    腾讯云API 生成Authentication Header加密字符串 C#代码示例
    《神经网络与深度学习》
    《神经网络与深度学习》第一章 使用神经网络来识别手写数字(三)- 用Python代码实现
    Rust语言的多线程编程
    C# DataTable的Select()方法不支持 != 判断
    《神经网络与深度学习》第一章 使用神经网络来识别手写数字(二)- 用梯度下降来训练学习
    C# 对多个文件进行zip压缩
    《神经网络与深度学习》:第一章 使用神经网络来识别手写数字(一)
    谷歌浏览器如何查看或获取Cookie字符串
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3837375.html
Copyright © 2020-2023  润新知