`

Java AWT应用示例 - 持续更新

    博客分类:
  • Java
 
阅读更多
/*
 * @(#)SampleAWT.java        1.00 17/06/27
 *
 * Copyright (c) 2017  Jacky.Dai
 * Address:.......
 * All rights reserved.
 *
 * Your
 * NOTES
 * HERE
 */

//package test;
//import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * Class description goes here.
 *
 * @version 	1.00 27 June 2017
 * @author 	Jacky_Dai
 */
public class SampleAWT implements MouseListener, MouseMotionListener
{
	/** mainFrame - This is the main frame for user */
    private Frame mainFrame;
	
	/**
     * titleLabel - thi is a sampele label
     * to display the title
     */
    private Label titleLabel;
	
	 /** testButton - sample Button for test */
    private Button testButton;
	
	 /** userTextField - sample TextField for test */
    private TextField userTextField;

	private final static int TEXT_FIELD_SIZE = 40;
	
    public void DisplayUI()
    {
        mainFrame = new Frame("SampleAWT main frame");
        // 加上窗口监听器,其中主要实现了退出功能
        mainFrame.addWindowListener(new SampleWindowListener());

        // 加一个标签
        titleLabel = new Label("Titile - This is a label.");
        mainFrame.add(titleLabel, BorderLayout.NORTH);

        // 加一个按钮
        testButton = new Button("Test Button");
        mainFrame.add(testButton, BorderLayout.WEST);

        // 设置按钮事件监听器,按钮按下时会向控制台输出信息
        //testButton.addActionListener(new MyButtonListener());

        // 加一个文本编辑框
        userTextField = new TextField(TEXT_FIELD_SIZE);
        mainFrame.add(userTextField, BorderLayout.SOUTH);

        // 加上鼠标动作监听器,因为类本身实现了这两个接口,所以参数是this
        mainFrame.addMouseListener(this);
        mainFrame.addMouseMotionListener(this);
        // 可以添加多个监听器,所以还可以定义其他的,如MyMouseListener类,然后加上

        // 设置刚好能容纳这些控件的尺寸
        mainFrame.pack();
        // 设置为可见
        mainFrame.setVisible(true);
    }

    public static void main(String[] args)
    {
        SampleAWT window = new SampleAWT();
        window.DisplayUI();
    }
	
	//
	//鼠标监听器MouseListener
	//监听鼠标事件MouseEvent。
	//相应事件和处理方法
	//鼠标事件         处理方法
	//MOUSE_CLICKED    MouseClicked (MouseEvent)    鼠标点击(单或双)
	//MOUSE_PRESSED    MousePressed (MouseEvent)    鼠标按下
	//MOUSE_RELEASED   MouseReleased(MouseEvent)    鼠标松开
	//MOUSE_ENTERED    MouseEntered (MouseEvent)    鼠标进入(某组件区域)
	//MOUSE_EXITED     MouseExited  (MouseEvent)    鼠标离开(某组件区域)
	//////////////////////////////////////////////////////////////////////////////
	//Handle Events of MouseListener
	@Override
	public void mouseClicked(MouseEvent e)
	{

	}

	@Override
	public void mouseEntered(MouseEvent e)
	{

	}

	@Override
	public void mouseExited(MouseEvent e)
	{
		this.userTextField.setText("the mouse has exited.");
	}

	@Override
	public void mousePressed(MouseEvent e)
	{

	}

	@Override
	public void mouseReleased(MouseEvent e)
	{
	}

	//鼠标监听器MouseMotionListener
    //对于鼠标的移动和拖放,另外用鼠标运动监听器MouseMotionListener。
    //因为许多程序不需要监听鼠标运动,把两者分开可简化程序。
    //相应事件和处理方法 
    //鼠标事件          处理方法
    //MOUSE_MOVED      MouseMoved  (MouseEvent)    鼠标在移动
    //MOUSE_DRAGGED    MouseDragged(MouseEvent)    鼠标被拖动
	//////////////////////////////////////////////////////////////////////////////
	//Handle Events of s MouseMotionListener
	@Override
	public void mouseDragged(MouseEvent e)
	{

	}

	@Override
	public void mouseMoved(MouseEvent e)
	{
		String str = "x = " + e.getX() + ", y = " + e.getY();
		this.userTextField.setText(str);
		System.out.println(str);
	}
}
class SampleWindowListener implements WindowListener
{

    @Override
    public void windowActivated(WindowEvent e)
    {
		//当窗口从非激活到激活状态时监视器调用该方法
    }

    @Override
    public void windowClosed(WindowEvent e)
    {
		//当窗口关闭时
    }

    @Override
    public void windowClosing(WindowEvent e)
    {
		//窗口正被关闭
        System.out.println("windowClosing");
        // 退出
        System.exit(0);
    }

    @Override
    public void windowDeactivated(WindowEvent e)
    {
        //激活到非激活状态
    }

    @Override
    public void windowDeiconified(WindowEvent e)
    {
        //当窗口撤销图标化时
    }

    @Override
    public void windowIconified(WindowEvent e)
    {
		//当窗口图标化时
    }

    @Override
    public void windowOpened(WindowEvent e)
    {
		//当窗口打开时
    }
}


javac -encoding UTF-8 SampleAWT.java


jar cvf SampleAWT .jar SampleAWT.class SampleWindowListener.class


修改Jar包 META-INF\MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.8.0_131 (Oracle Corporation)
Main-Class: SampleAWT


jar SampleAWT


AWT的布局管理器

AWT中主要有四种布局管理器:FlowLayout、GridLayout、BorderLayout和CardLayout。

下面给出这四种布局管理器的源码:

package com.guan.visualTest.frameTest;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class YourFrame extends Frame{
    private static final long serialVersionUID = 1L;

    Panel borderLayoutPanel;
    Panel cardLayoutPanel;
    Panel flowLayoutPanel;
    Panel gridLayoutPanel;

    private void generateGridLayoutPanel() {
       gridLayoutPanel = new Panel();
       gridLayoutPanel.setLayout(new GridLayout(2,2));
      
       Button button1 = new Button("button1");
       Button button2 = new Button("button2");
       Button button3 = new Button("button3");
       Button button4 = new Button("button4");
      
       gridLayoutPanel.add(button1);
       gridLayoutPanel.add(button2);
       gridLayoutPanel.add(button3);
       gridLayoutPanel.add(button4);     
    }

    private void generateFlowLayoutPanel() {
       flowLayoutPanel = new Panel();
       flowLayoutPanel.setLayout(new FlowLayout());

       Button button1 = new Button("button1");
       Button button2 = new Button("button2");
       Button button3 = new Button("button3");
       Button button4 = new Button("button4");
       Button button5 = new Button("button5");

       button1.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
              ((Button)e.getSource()).setLabel("welcome ");
           }
       });

       flowLayoutPanel.add(button1);
       flowLayoutPanel.add(button2);
       flowLayoutPanel.add(button3);
       flowLayoutPanel.add(button4);
       flowLayoutPanel.add(button5);
    }

    private void generateBorderLayoutPanel() {
       borderLayoutPanel = new Panel();
       borderLayoutPanel.setLayout(new BorderLayout());

       Button button1 = new Button("South");
       Button button2 = new Button("West");
       Button button3 = new Button("East");
       Button button4 = new Button("North");
       Button button5 = new Button("Center");

       borderLayoutPanel.add(button1,BorderLayout.SOUTH);
       borderLayoutPanel.add(button2,BorderLayout.WEST);
       borderLayoutPanel.add(button3,BorderLayout.EAST);
       borderLayoutPanel.add(button4,BorderLayout.NORTH);
       borderLayoutPanel.add(button5,BorderLayout.CENTER);
    }

    private void genrateCardLayoutPanel() {
       cardLayoutPanel = new Panel();
       final CardLayout cl = new CardLayout();
       cardLayoutPanel.setLayout(cl);

       Button button1 = new Button("black");
       Button button2 = new Button("red");

       ActionListener al = new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
              cl.next(cardLayoutPanel);             
           }
       };
      
       button1.addActionListener(al);
       button2.addActionListener(al);

       cardLayoutPanel.add(button1,"1");
       cardLayoutPanel.add(button2,"2");
    }

    public YourFrame(String panelName) {
       super("panelName");

       generateBorderLayoutPanel();
       generateFlowLayoutPanel();
       generateGridLayoutPanel();
       genrateCardLayoutPanel();
       setLayout(new GridLayout(2,2));

       add(borderLayoutPanel);
       add(flowLayoutPanel);
       add(gridLayoutPanel);
       add(cardLayoutPanel);

       setSize(800, 800);
       setLocation(100,100);

       addWindowListener(new WindowAdapter(){
           @Override
           public void windowClosing(WindowEvent arg0) {
              System.exit(0);
           }
       });
    }

    public static void main(String[] args) {
       YourFrame yourFrame = new YourFrame("welcome");
       yourFrame.setVisible(true);
    }
}

分享到:
评论

相关推荐

    Java AWT(Applet)应用示例 - 持续更新

    Java AWT(Abstract Window Toolkit)是Java平台早期的图形用户界面(GUI)工具包,它为开发者提供了构建桌面应用程序的基本组件,如按钮、文本框、菜单等。在本示例中,我们将深入探讨Java AWT,特别是关于Applet的...

    海康威视摄像头开发示例 预警 报警示例

    使用Java作为开发语言,开发者可以创建跨平台的应用程序,而Swing是Java AWT(Abstract Window Toolkit)库的一部分,用于构建图形用户界面(GUI)。在本示例中,Swing库被用来设计和实现摄像头监控的用户界面,包括...

    PageLayout Manager for Java Swing/AWT-开源

    Java Swing和AWT是Java平台上用于构建图形用户界面(GUI)的两...通过下载并研究`pagelayout1.16`这个版本,开发者可以深入理解其工作原理,并将其集成到自己的Java Swing或AWT应用中,提升用户体验和界面设计的质量。

    Java-Swing基础资料汇总

    在Java AWT/Swing领域,掌握Swing的基础知识对于构建美观且功能强大的桌面应用程序至关重要。下面我们将深入探讨Swing的基本概念、组件、事件模型以及用户界面设计。 1. Swing组件库: Swing 提供了丰富的组件集,...

    java图形界面

    自JDK 1.0发布以来,AWT一直是Java GUI编程的重要组成部分,并在后续版本中得到了持续的改进和优化。 ##### AWT的主要功能特点: 1. **丰富的图形界面组件**:AWT提供了一系列基本的GUI组件,例如按钮、复选框、...

    Core Java应用程序设计教程2

    5. **持续学习:** Java语言和技术不断更新发展,保持学习的态度,跟踪最新的技术和框架。 #### 四、总结 《Core Java应用程序设计教程2》是一本非常适合初学者和有一定基础的开发者学习的书籍。它不仅覆盖了Java...

    2个Java抛物线算法源码例子.rar

    第一个Java源码示例可能是一个基本的抛物线绘制程序,它可能使用了Java的`java.awt`或`javax.swing`库来创建图形界面,并通过`java.awt.Graphics`类进行绘图。在这个例子中,程序员可能定义了一个函数来计算抛物线的...

    用Java实现图形界面猜数字大小的游戏

    - **Java Swing**: Java Swing是Java Foundation Classes (JFC)的一部分,用于创建桌面应用程序的GUI。在这个项目中,我们使用了Swing库中的组件如`JFrame`(主窗口)、`JButton`(按钮)、`JLabel`(标签)等来...

    java开发爱心代码示例,开发代码的步骤解析

    import java.awt.*; import javax.swing.*; public class Heart extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d....

    JAVA_3D开发指导

    ### 四、Java 3D应用示例 1. **虚拟现实**:利用Java 3D构建虚拟环境,用于教育、培训、游戏等。 2. **科学可视化**:展示数据和模拟结果,如分子结构、流体力学等。 3. **建筑设计**:在3D环境中预览和编辑建筑...

    Java2实用教程电子教案.pdf

    - **稳定**: Java 经过多年的持续改进和发展,已经成为一种非常稳定的开发语言。 **1.3 安装 SUN 公司的 SDK** - **下载**: 需要从官方网站下载 JDK (Java Development Kit),它包含了 Java 编译器、运行时环境和...

    Swing 实现系统托盘

    参考提供的`SystemTrayDemo`文件,应该包含了一个完整的系统托盘应用示例,包括创建图标、添加事件监听器、创建上下文菜单以及添加到系统托盘的过程。通过阅读和理解这段代码,你可以了解到如何在Swing应用中实现...

    游戏编程游戏编程java游戏编程java

    Java提供了丰富的图形库,如Java AWT(Abstract Window Toolkit)和Swing,用于创建用户界面。对于游戏开发,更常用的是JavaFX,它提供了更现代的图形和动画支持。此外,有许多专门针对游戏开发的框架,如LibGDX,它...

    java applet 心跳线 控件

    2. **图形用户界面(GUI)组件**:在Java Applet中,你需要使用`java.awt`和`javax.swing`包中的类来创建和管理GUI组件。心跳线可能会使用`Graphics`类进行绘制,这需要重写`paint()`或`paintComponent()`方法。 3....

    java+applet源码-graph_visualization:用于可视化图形数据结构的JavaApplet的源代码(为Smith学院的C

    4. **GUI组件**:可能包含用于用户界面的Java Swing或AWT组件,用于显示和操作图形数据结构。 5. **测试和示例**:可能有示例数据和测试用例,用于验证程序功能的正确性。 6. **文档**:可能包括README文件,提供...

Global site tag (gtag.js) - Google Analytics