流式布局FlowLayout

  1. package net.zyz;
  2.  
  3. import java.awt.Button;
  4. import java.awt.FlowLayout;
  5. import java.awt.Frame;
  6.  
  7. public class TestFlowLayout {
  8.  
  9. public static void main(String[] args) {
  10. Frame frame=new Frame("Flow Layout");
  11. //设置窗口的布局方式为FlowLayout,元素在窗口中左对齐,元素水平间距为10,垂直间距为20
  12. frame.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
  13. for(int i=1;i<=10;i++){
  14. frame.add(new Button("按纽"+i));
  15. }
  16. frame.pack();
  17. frame.setVisible(true);
  18. }
  19.  
  20. }

边界布局BorderLayout

  1. package net.zyz;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Button;
  5. import java.awt.Frame;
  6.  
  7. public class TestBorderLayout {
  8.  
  9. public static void main(String[] args) {
  10. Frame frame=new Frame("Border Layout");
  11. //边界布局是frame默认的布局方式
  12. Button button1=new Button("东");
  13. frame.add(button1, BorderLayout.EAST);
  14.  
  15. Button button2=new Button("西");
  16. frame.add(button2, BorderLayout.WEST);
  17.  
  18. Button button3=new Button("南");
  19. frame.add(button3, BorderLayout.SOUTH);
  20.  
  21. Button button4=new Button("北");
  22. frame.add(button4, BorderLayout.NORTH);
  23.  
  24. Button button5=new Button("中");
  25. frame.add(button5, BorderLayout.CENTER);
  26.  
  27. frame.pack();
  28. frame.setVisible(true);
  29. }
  30.  
  31. }

表格布局GridLayout

  1. package net.zyz;
  2.  
  3. import java.awt.Button;
  4. import java.awt.Frame;
  5. import java.awt.GridLayout;
  6.  
  7. public class TestGridLayout {
  8.  
  9. public static void main(String[] args) {
  10. Frame frame=new Frame("Grid Layout");
  11. //frame默认的布局为BorderLayout
  12. frame.setLayout(new GridLayout(2, 3));
  13. for(int i=1;i<=5;i++){
  14. frame.add(new Button("按纽"+i));
  15. }
  16. //setSize只指定窗口的大小,位置在原点(0,0)
  17. //setBound既可指定位置,又可指定大小
  18. // frame.setSize(300,200);
  19. //pack会将窗口中的组件正好包裹起来,即大小自适应
  20. frame.pack();
  21. frame.setVisible(true);
  22. }
  23.  
  24. }

综合布局

  1. package net.zyz;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Button;
  5. import java.awt.Frame;
  6. import java.awt.GridLayout;
  7. import java.awt.Panel;
  8.  
  9. public class TestMutiLayout {
  10.  
  11. public static void main(String[] args) {
  12. Frame frame=new Frame("MutiLayout");
  13. //窗口分成2行1列,分上下两个panel
  14. frame.setLayout(new GridLayout(2, 1));
  15.  
  16. //第1个panel采用BorderLayout
  17. Panel p1=new Panel();
  18. p1.setLayout(new BorderLayout());
  19. Button b11=new Button("ButtonWest");
  20. Button b12=new Button("ButtonEast");
  21. //CENTER部分再使用panel并采用GridLayout
  22. Panel p11=new Panel();
  23. p11.setLayout(new GridLayout(2, 1));
  24. Button b13=new Button("ButtonUp");
  25. Button b14=new Button("ButtonDown");
  26. p11.add(b13);
  27. p11.add(b14);
  28. p1.add(b11, BorderLayout.EAST);
  29. p1.add(b12, BorderLayout.WEST);
  30. p1.add(p11, BorderLayout.CENTER);
  31.  
  32. //第2个panel采用BorderLayout
  33. Panel p2=new Panel();
  34. p2.setLayout(new BorderLayout());
  35. Button b21=new Button("ButtonWest");
  36. Button b22=new Button("ButtonEast");
  37. //CENTER部分再使用panel并采用GridLayout
  38. Panel p21=new Panel();
  39. p21.setLayout(new GridLayout(2, 2));
  40. for(int i=1;i<=4;i++){
  41. p21.add(new Button("Button"));
  42. }
  43. p2.add(b21, BorderLayout.EAST);
  44. p2.add(b22, BorderLayout.WEST);
  45. p2.add(p21, BorderLayout.CENTER);
  46.  
  47. frame.add(p1);
  48. frame.add(p2);
  49. frame.setSize(300,200);;
  50. frame.setVisible(true);
  51. }
  52.  
  53. }

绘图Graphics

  1. package net.zyz;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Frame;
  5. import java.awt.Graphics;
  6.  
  7. public class TestGraphics {
  8.  
  9. public static void main(String[] args) {
  10. new FrameDraw();
  11. }
  12.  
  13. }
  14. class FrameDraw extends Frame{
  15. /**
  16. *
  17. */
  18. private static final long serialVersionUID = 1L;
  19. public FrameDraw() {
  20. setSize(400,300);
  21. setVisible(true);
  22. }
  23. @Override
  24. /**
  25. * Object->Component->Container->Window->Frame
  26. * paint是Container类的方法,在继承Frame类中要重写,重写后系统就会自动调用
  27. */
  28. public void paint(Graphics g) {
  29. Color color=g.getColor();
  30. g.setColor(Color.RED);
  31. g.drawOval(50, 50, 200, 150);
  32. g.setColor(new Color(0, 255, 0));
  33. g.fillRect(100, 100, 200, 50);
  34. g.setColor(color);
  35. }
  36. }

动作事件监听java.awt.event.ActionListener

Button

  1. package net.zyz;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Button;
  5. import java.awt.Frame;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8.  
  9. public class TestActionListener {
  10.  
  11. public static void main(String[] args) {
  12. new Frame2();
  13. }
  14.  
  15. }
  16.  
  17. class Frame2 extends Frame {
  18.  
  19. /**
  20. *
  21. */
  22. private static final long serialVersionUID = 1L;
  23.  
  24. public Frame2() {
  25. super("Event Listener");
  26. Button button1 = new Button("button");
  27. Button button2 = new Button("button");
  28. button1.setActionCommand("button1");
  29. button2.setActionCommand("button2");
  30. //button1和button2加入同一个监听器,如何区分?
  31. button1.addActionListener(new monitor());
  32. button2.addActionListener(new monitor());
  33. add(button1, BorderLayout.NORTH);
  34. add(button2, BorderLayout.SOUTH);
  35. pack();
  36. setVisible(true);
  37. }
  38. }
  39.  
  40. class monitor implements ActionListener {
  41. @Override
  42. public void actionPerformed(ActionEvent e) {
  43. Button button=(Button)e.getSource();
  44. //首先要得到事件源对象,因getSource()返回的是Object,需强制转换为Button
  45. String actionCommand=button.getActionCommand();
  46. /**
  47. * Button的getLabel()方法得到是按纽上的文字,有可能两个按纽的文本会一样,如本例
  48. * Button的getName()得到的是按纽的name,这个name值是由系统命名的,第1个Button的name是button0
  49. * 最好使用getActionCommand()方法进行区分处理
  50. */
  51. if(actionCommand.equals("button1")){
  52. System.out.println("你按下了button1按纽");
  53. }else if(actionCommand.equals("button2")){
  54. System.out.println("你按下了button2按纽");
  55. }
  56. }
  57. }

TextField

  1. package net.zyz;
  2.  
  3. import java.awt.Frame;
  4. import java.awt.TextField;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7.  
  8. public class TestTextField {
  9.  
  10. public static void main(String[] args) {
  11. new TFFrame();
  12. }
  13. }
  14. class TFFrame extends Frame{
  15. /**
  16. *
  17. */
  18. private static final long serialVersionUID = 1L;
  19.  
  20. public TFFrame() {
  21. TextField txt1=new TextField(10);
  22. //对于Button、TextField等标准组件,一般都采用ActionEvent
  23. txt1.addActionListener(new monitorTF());
  24. add(txt1);
  25. pack();
  26. setVisible(true);
  27. }
  28. }
  29. class monitorTF implements ActionListener{
  30. @Override
  31. /**
  32. * 对于按纽来说默认的动作事件是单击,文本框默认事件的是按回车键,
  33. * 这些事件执行时,系统回自动调用actionPerformed方法
  34. * 所以需要在监听器里要重写该方法,ActionListener接口里也只有这一个方法
  35. */
  36. public void actionPerformed(ActionEvent e) {
  37. TextField tf1=(TextField)(e.getSource());
  38. System.out.println(tf1.getText());
  39. tf1.setText("");
  40. }
  41. }

Window事件监听WindowListener

  1. package net.zyz;
  2.  
  3. import java.awt.Frame;
  4. import java.awt.event.WindowAdapter;
  5. import java.awt.event.WindowEvent;
  6.  
  7. public class TestWindowClose {
  8.  
  9. public static void main(String[] args) {
  10. new FrameWindowCloseTest();
  11. }
  12. }
  13.  
  14. class FrameWindowCloseTest extends Frame {
  15. private static final long serialVersionUID = 1L;
  16.  
  17. public FrameWindowCloseTest() {
  18. setSize(300, 200);
  19. setVisible(true);
  20. /*
  21. * addWindowListener方法的参数为继承了WindowAdapter的匿名类
  22. * 该匿名类直接写在方法的内部
  23. * 一般情况下很少使用,只有代码简单且无需变动时才临时使用,推荐使用内部类
  24. */
  25. this.addWindowListener(new WindowAdapter() {
  26. public void windowClosing(WindowEvent e) {
  27. setVisible(false);
  28. System.exit(0);
  29. }
  30. });
  31.  
  32. /*
  33. * addWindowListener()方法的参数为WindowListener对象
  34. * 而WindowListener是一个接口,里面有6、7个类似windowClosing()的方法
  35. * 如果要来实现接口的话,则需要实现接口里的每一个方法
  36. * jdk提供了实现WinowListener接口的抽象类WindowAdapter,
  37. * 其实WindowApdater类中实现的方法并无实际代码
  38. * 对于类中的方法,子类是不需要全都实现。本例中只要重写windowClosing()方法即可。
  39. * monitor extends WindowAdapter implements WindowListener
  40. * WindowAdapter只是一个中间件,过渡一下
  41. */
  42. }
  43. }

鼠标事件监听器MouseListener

  1. package net.zyz;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Frame;
  5. import java.awt.Graphics;
  6. import java.awt.Point;
  7. import java.awt.event.MouseAdapter;
  8. import java.awt.event.MouseEvent;
  9. import java.util.ArrayList;
  10. import java.util.Iterator;
  11.  
  12. public class TestMouseListener {
  13.  
  14. public static void main(String[] args) {
  15. new FramePoints();
  16. }
  17. }
  18. class FramePoints extends Frame{
  19.  
  20. private static final long serialVersionUID = 1L;
  21. ArrayList<Point> points;
  22.  
  23. public FramePoints() {
  24. points=new ArrayList<Point>();
  25. this.addMouseListener(new MonitorPoint());
  26. this.addWindowListener(new WindowClose(this));
  27. setSize(500,400);
  28. setVisible(true);
  29. }
  30.  
  31. @Override
  32. public void paint(Graphics g) {
  33. g.setColor(Color.GREEN);
  34. Iterator<Point> iterator=points.iterator();
  35. while (iterator.hasNext()) {
  36. Point point = (Point) iterator.next();
  37. g.fillOval(point.x, point.y, 10, 10);
  38. }
  39. }
  40.  
  41. //监听鼠标事件:MouseAdapter implements MouseListener
  42. class MonitorPoint extends MouseAdapter{
  43. @Override
  44. public void mousePressed(MouseEvent e) {
  45. FramePoints f=(FramePoints)e.getSource();
  46. points.add(new Point(e.getX(), e.getY()));
  47. f.repaint();
  48. }
  49. }
  50.  
  51. //监听窗口事件:WindowAdapter implements WindowListener
  52. // class MonitorWindow extends WindowAdapter{
  53. // public void windowClosing(WindowEvent e) {
  54. // setVisible(false);
  55. // System.exit(0);
  56. // }
  57. // }
  58. }

按键事件监听器KeyListener

  1. package net.zyz;
  2.  
  3. import java.awt.Frame;
  4. import java.awt.event.KeyAdapter;
  5. import java.awt.event.KeyEvent;
  6. import java.awt.event.WindowAdapter;
  7. import java.awt.event.WindowEvent;
  8.  
  9. public class TestKey {
  10.  
  11. public static void main(String[] args) {
  12. new FrameKey().lanch();
  13. }
  14. }
  15.  
  16. class FrameKey extends Frame {
  17. private static final long serialVersionUID = 1L;
  18.  
  19. void lanch() {
  20. setSize(300, 200);
  21. this.addKeyListener(new KeyAdapter() {
  22. @Override
  23. public void keyPressed(KeyEvent e) {
  24. int keyCode = e.getKeyCode();
  25. /**
  26. * getKeyCode()方法得到是按键的虚拟键码,
  27. * 如按A键无论大小写都是65(美式键盘布局),而且跟键盘布局也有关。
  28. * 如果按组合键的话,会激活多个keyPressed事件,
  29. * 如shift+A组合键getKeyCode()方法就会得到两个键值,但getKeyChar()方法只会得到一个字符('a')
  30. * 所以keyPressed事件最好和getKeyCode()方法结合使用
  31. * 虚拟键码 用于报告按下了键盘上的哪个键,而不是一次或多次键击组合生成的字符(如 "A" 是由 shift + "a" 生成的)。
  32. * 例如,按下 Shift 键会生成 keyCode 为 VK_SHIFT 的 KEY_PRESSED 事件,
  33. * 而按下 'a' 键将生成 keyCode 为 VK_A 的 KEY_PRESSED 事件。
  34. * 释放 'a' 键后,会激发 keyCode 为 VK_A 的 KEY_RELEASED 事件。
  35. * 另外,还会生成一个 keyChar 值为 'A' 的 KEY_TYPED 事件。
  36. */
  37. System.out.println(keyCode);
  38. System.out.println(e.getKeyChar());
  39. switch (keyCode) {
  40. case KeyEvent.VK_UP:
  41. System.out.println("up");
  42. break;
  43. case KeyEvent.VK_DOWN:
  44. System.out.println("down");
  45. break;
  46. case KeyEvent.VK_LEFT:
  47. System.out.println("left");
  48. break;
  49. case KeyEvent.VK_RIGHT:
  50. System.out.println("right");
  51. break;
  52. default:
  53. break;
  54. }
  55. }
  56. });
  57. this.addWindowListener(new WindowAdapter() {
  58. @Override
  59. public void windowClosing(WindowEvent e) {
  60. setVisible(false);
  61. System.exit(0);
  62. }
  63. });
  64. setVisible(true);
  65. }
  66. }

Java基础---AWT的更多相关文章

  1. Java基础 awt Graphics2D 生成矩形图片并向内写入字符串

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  2. Java基础 awt Frame 设置窗体的背景颜色

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  3. Java基础 awt Graphics2D 生成矩形图片并向其中画一条直线

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  4. Java基础 awt Frame 窗体的大小不可调

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  5. Java基础 awt Frame 设置窗体的大小 位置 可见性

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  6. Java基础 awt Frame 窗体在屏幕的中间显示

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  7. Java基础 awt Frame 点击叉后,在控制台输出提示信息并关闭程序

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  8. Java基础 awt Font 四种字体样式

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  9. Java基础 awt Button 点击按钮后在控制台输出文字

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

随机推荐

  1. Maven基础笔记,原理

    1.什么是Maven ①Maven是一款实现自动化构建的工具软件. ②构建:从源程序→程序的执行 清理→编译→测试→报告→打包→部署→执行 ③构建工具:Make→Ant→Maven→Gradle... ...

  2. Mono 异步加载数据更新主线程

    主要是用 async和 await 调用 RunOnUiThread来更新. 调用函数: //异步加载数据开始 doInBackground (); //异步加载数据开始end protected a ...

  3. Nopcommerce 二次开发1 基础

    1  Doamin    酒店 namespace Nop.Core.Domain.Hotels { /// <summary> /// 酒店 /// </summary> p ...

  4. live555+ffmpeg如何提取关键帧(I帧,P帧,B帧)

    live555+ffmpeg如何提取关键帧(I帧,P帧,B帧)开发流媒体播放器的时候,特别是在windows  mobile,symbian(S60)平台开发时,很可能遇到需要自己开发播放器的情况.S ...

  5. NK3C框架(MyBatis、Durid)连接SQL Server

    NK3C框架连接SQL Server修改配置如下: 1.添加POM引用 <sqlserver.driver.version>4.0</sqlserver.driver.version ...

  6. Windows 2008 R2 安装 Windows phone 7 开发环境

    安装环境:1.Windows server 2008 R22.Visual Studio 2010 SP1 旗舰版 1.下载 WP7 SDK 离线安装包.(话说要选择与 VS2010 相同语言的版本) ...

  7. CSV表格读取

    读取CSV表格需要CSV表格的编码格式为UTF-8 ,这个脚本中有些是为了方便使用封装的dll 不过都是一些简单的实现,自己实现也很容易,可做参考. /// <summary> /// 构 ...

  8. .NET获取根目录方法

    1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径 方法2.AppDomain.CurrentDomain.Ba ...

  9. python文件操作实例

    把目录 E:\ 下面所有 后缀名为 .py 的 文件复制到 E:\PyLearn #coding:utf-8 import os import shutil def getfile(srcDir,ds ...

  10. A way to connect to network through WIFI on Centos 7

    I bought a DELL laptop,but can not connect to network through wifi.There's lots of methods on the In ...