用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

柯侧耳倾听者    -  云代码空间

—— 翱翔在Java世界的海洋之上

AWT编程

2017-12-22|885阅||

摘要:AWT编程(2学时) 一、实验目的与要求 1. AWT容器 2. 布局管理器 3. AWT常用字组件 4. 事件处理  5. AWT菜单 6. 在AWT中绘图 7. 处理位图 8. 剪贴板   二、实验原理

AWT编程2学时)

一、实验目的与要求

1. AWT容器

2. 布局管理器

3. AWT常用字组件

4. 事件处理

 5. AWT菜单

6. AWT中绘图

7. 处理位图

8. 剪贴板

 

二、实验原理

Java中使用AWTSwing类来完成图形用户界面编程,其中AWT的全称是抽象窗口工具集,他是Sum最早提供的GUI库,这个GUI库提供了一些基本功能但这个GUI库功能有限,所以又提供了Swing库,通过AWTSwing提供的的图形界面组件库,java的图形用户界面非常简单,程序依次创建所需的图形组件,并以合适的方式将这些组件组织在一起,就可以开发出非常美观的用户界面。

三、预习与准备

1. 熟练AWT容器

2. 布局管理器

3. AWT常用组件

4. 事件处理

 5. AWT菜单

6. AWT中绘图

7. 处理位图

8. 剪贴板

、实验内容

1. 熟练AWT容器

2. 布局管理器

3. AWT常用组件

4. 事件处理

 5. AWT菜单

6. AWT中绘图

7. 处理位图

8. 剪贴板

 

 

五、实验过程

1. 熟练AWT容器

package day01;

import java.awt.Frame;

public class FrameTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

Frame f = new Frame("测试");

f.setBounds(30,30,250,200);

f.setVisible(true);

}

}

 

2. 布局管理器

package day02;

import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class TestFlowLayout {

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame frame = new TetsFlowLayoutFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

 

 

class TetsFlowLayoutFrame extends JFrame{

public TetsFlowLayoutFrame(){

setTitle("测试流布局管理器'");

setSize(400,200);

FlowLayoutPanel flp = new FlowLayoutPanel();

add(flp);


}

}

class FlowLayoutPanel extends JPanel{

public FlowLayoutPanel(){

setLayout(new BorderLayout());

JButton button1 = new JButton("按钮1");

JButton button2 = new JButton("按钮2");

JButton button3 = new JButton("按钮3");

JButton button4 = new JButton("按钮4");

JButton button5 = new JButton("按钮5");

add(new JButton("按钮1"),BorderLayout.EAST);

add(new JButton("按钮2"),BorderLayout.WEST);

add(new JButton("按钮3"),BorderLayout.SOUTH);

add(new JButton("按钮4"),BorderLayout.NORTH);

add( new JButton("按钮5"),BorderLayout.CENTER);

}

}

 

 

package day02;

import java.awt.GridLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class TestGridLayout {

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame frame = new TestGridLayoutFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

class TestGridLayoutFrame extends JFrame{

public TestGridLayoutFrame(){

setTitle("测试网格布局管理器");

setSize(300,200);

        GridLayoutPanel glp = new GridLayoutPanel();

        add(glp);

}

}

class GridLayoutPanel extends JPanel{

public GridLayoutPanel(){

setLayout(new GridLayout(3,2));

add(new JButton("按钮1"));

add(new JButton("按钮2"));

add(new JButton("按钮3"));

add(new JButton("按钮4"));

add(new JButton("按钮5"));

add(new JButton("按钮6"));

}

}

 

3. AWT常用组件

package day02;

import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class TestButton {

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame frame = new TestButtonFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

class TestButtonFrame extends JFrame {

private JPanel p;

public TestButtonFrame(){

setTitle("测试按钮操作");

setSize(300,200);

JButton greenButton = new JButton("greenButton");

JButton pinkButton = new JButton("pinkButton");

 p = new JPanel();

p.add(greenButton);

p.add(pinkButton);

add(p);

ColorAction greenAction = new ColorAction(Color.green);

ColorAction pinkAction = new ColorAction(Color.pink);

greenButton.addActionListener(greenAction);

pinkButton.addActionListener(pinkAction);

}

public class ColorAction implements ActionListener{

private Color bgc ;

public ColorAction (Color c){

bgc = c;

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

p.setBackground(bgc);

}

}

}

 

4. 事件处理

package day03;

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.Frame;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class EventQs {

private Frame f = new Frame("测试");

private Button ok = new Button("确定");

private TextField  tf = new TextField(30);

public void init(){

ok.addActionListener(new OkListener());

f.add(tf);

f.add(ok,BorderLayout.SOUTH);

f.setVisible(true);

}

class OkListener implements ActionListener{

 

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

System.out.println("用户单击ok按钮");

tf.setText("Hello World");

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

        new EventQs().init();

}

}

 

4.AWT菜单

package day01;

import javax.swing.ButtonGroup;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

public class TestSelectDemo {

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame frame = new TestSelectFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

class TestSelectFrame extends JFrame {

public TestSelectFrame(){

setTitle("测试单选按钮、复选框和下拉列表");

setSize(400,100);

TestSelectPanel tsp  =new TestSelectPanel();

add(tsp);

}

}

class TestSelectPanel extends JPanel{

public TestSelectPanel(){

JCheckBox jcb1 = new JCheckBox("Java");

JCheckBox jcb2 = new JCheckBox("#");

JCheckBox jcb3 = new JCheckBox("C++");

add(jcb1);

add(jcb2);

add(jcb3);

ButtonGroup group = new ButtonGroup();

JRadioButton b1= new JRadioButton("男");

JRadioButton b2= new JRadioButton("女");

group.add(b1);

group.add(b2);

add(b1);

add(b2);

JComboBox jcb = new JComboBox();

jcb.addItem("计算机");

jcb.addItem("医学");

jcb.addItem("英语");

add(jcb);

}

}

 

5.AWT中绘图

package day06;

import javax.swing.JFrame;

public class BallFrame {

public BallFrame(){

JFrame frame = new JFrame();

frame.setTitle("弹球游戏");

    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

    frame.setBounds(100,200,800,600);

    frame.setVisible(true);

    BallPanel bp = new BallPanel();

    frame.add(bp);

    frame.setVisible(true);

}

public static void main(String[] args) {

   new BallFrame();

}

}

 

package day06;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionListener;

import javax.swing.JPanel;

public class BallPanel extends JPanel implements MouseMotionListener {

final static int RIIGHT_DOWN = 0;

final static int LEFT_DOWN=1;

final static int LEFT_UP =2;

final static int RIGHT_UP=3;

int f=0;

int speed = 10;

int bx=0;

int by=0;

int dx=100;

int dy=400;


public BallPanel(){

move();

addMouseMotionListener(this);

}

public void paint(Graphics g){

super.paint(g);

setBackground(Color.black);

g.setColor(Color.yellow);

g.fillOval(bx, by,20, 20);

g.setColor(Color.blue);

g.fillRect(dx, dy, 100, 20);


}

public void move(){

new Thread(){

public void run(){

while(true){

if(f==0){

bx+=speed;

by+=speed;

}

if(f==1){

bx-=speed;

by+=speed;

}

if(f==2){

bx-=speed;

by-=speed;

}

if(f==3){

bx+=speed;

by-=speed;

}

if(bx>800-20){

if(f==0){

f=1;

}else{

f=2;

}

}

if(by>600-20){

if(f==1){

f=2;

}else{

f=3;

}

}

if(bx<0){

if(f==1){

f=0;

}else{

f=3;

}

}

if(by<0){

if(f==2){

f=1;

}else{

f=0;

}

}

if (by >= 400 - 20) {

if (bx >= dx && bx <= dx + 100) {

speed++;

} else {

Thread.currentThread().stop();

}

if (speed >= 20)

{

speed = 20;

}

if (f == 1) {

f = 2;

} else {

f = 3;

}

}

repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}.start();

}

@Override

public void mouseDragged(MouseEvent e) {

// TODO Auto-generated method stub


}

@Override

public void mouseMoved(MouseEvent e) {

// TODO Auto-generated method stub

dx = e.getX()-100/2;


}

}

 

     7.处理位图

  package day04;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.awt.image.*;

import javax.imageio.*;

import java.io.*;

public class Gobang

{

BufferedImage table;

BufferedImage black;

BufferedImage white;

BufferedImage selected;

private static int BOARD_SIZE = 15;

private final int TABLE_WIDTH = 535;

private final int TABLE_HETGHT = 536;

private final int RATE = TABLE_WIDTH / BOARD_SIZE;

private final int X_OFFSET = 5;

private final int Y_OFFSET = 6;

private String[][] board = new String[BOARD_SIZE][BOARD_SIZE];

JFrame f = new JFrame("五子棋游戏");

ChessBoard chessBoard = new ChessBoard();

private int selectedX = -1;

private int selectedY = -1;

public void init()throws Exception

{

table = ImageIO.read(new File("image/board.jpg"));

black = ImageIO.read(new File("image/black.gif"));

white = ImageIO.read(new File("image/white.gif"));

selected = ImageIO.read(new File("image/selected.gif"));

for (int i = 0 ; i < BOARD_SIZE ; i++)

{

for ( int j = 0 ; j < BOARD_SIZE ; j++)

{

board[i][j] = "╋";

}

}

chessBoard.setPreferredSize(new Dimension(

TABLE_WIDTH , TABLE_HETGHT));

chessBoard.addMouseListener(new MouseAdapter()

{

public void mouseClicked(MouseEvent e)

{

int xPos = (int)((e.getX() - X_OFFSET) / RATE);

int yPos = (int)((e.getY() - Y_OFFSET ) / RATE);

board[xPos][yPos] = "●";

chessBoard.repaint();

}

public void mouseExited(MouseEvent e)

{

selectedX = -1;

selectedY = -1;

chessBoard.repaint();

}

});

chessBoard.addMouseMotionListener(new MouseMotionAdapter()

{

public void mouseMoved(MouseEvent e)

{

selectedX = (e.getX() - X_OFFSET) / RATE;

selectedY = (e.getY() - Y_OFFSET) / RATE;

chessBoard.repaint();

}

});

f.add(chessBoard);

f.pack();

f.setVisible(true);

}

public static void main(String[] args)throws Exception

{

Gobang gb = new Gobang();

gb.init();

}

class ChessBoard extends JPanel

{

public void paint(Graphics g)

{

g.drawImage(table , 0 , 0 , null);

if (selectedX >= 0 && selectedY >= 0)

g.drawImage(selected , selectedX * RATE + X_OFFSET ,

selectedY * RATE + Y_OFFSET, null);

for (int i = 0 ; i < BOARD_SIZE ; i++)

{

for ( int j = 0 ; j < BOARD_SIZE ; j++)

{

if (board[i][j].equals("●"))

{

g.drawImage(black , i * RATE + X_OFFSET

, j * RATE + Y_OFFSET, null);

}

if (board[i][j].equals("○"))

{

g.drawImage(white, i * RATE  + X_OFFSET

, j * RATE  + Y_OFFSET, null);

}

}

}

}

}

}

 

   8.剪贴板

package day04;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.awt.datatransfer.*;

public class SimpleClipboard

{

private Frame f = new Frame("简单的剪贴板程序");

private Clipboard clipboard = Toolkit

.getDefaultToolkit().getSystemClipboard();

private TextArea jtaCopyTo = new TextArea(5,20);

private TextArea jtaPaste = new TextArea(5,20);

private Button btCopy = new Button("复制");

private Button btPaste = new Button("粘贴");

public void init()

{

Panel p = new Panel();

p.add(btCopy);

p.add(btPaste);

btCopy.addActionListener(event ->

{

StringSelection contents = new

StringSelection(jtaCopyTo.getText());

// 将StringSelection对象放入剪贴板

clipboard.setContents(contents, null);

});

btPaste.addActionListener(event ->

{

if (clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor))

{

try

{

// 取出剪贴板中stringFlavor内容

String content = (String)clipboard

.getData(DataFlavor.stringFlavor);

jtaPaste.append(content);

}

catch (Exception e)

{

e.printStackTrace();

}

}

});

Box box = new Box(BoxLayout.X_AXIS);

box.add(jtaCopyTo);

box.add(jtaPaste);

f.add(p,BorderLayout.SOUTH);

f.add(box,BorderLayout.CENTER);

f.pack();

f.setVisible(true);

}

public static void main(String[] args)

{

new SimpleClipboard().init();

}

}

 

 

六、实验效果

 1. 熟练AWT容器

 

2. 布局管理器

 

 

3. AWT常用组件

 

4. 事件处理

 

 5. AWT菜单

 

6.AWT中绘图

 

7. 处理位图

 

8. 剪贴板(MyEclipse2014不支持Java8新特性)

 

七、实验总结与体会

     通过这次课的学习,初步掌握了javaAWT的基本用法和一些常用的方法,也发现了自身的一些问题,比如不注重细节,导致程序无法运行,同时也发现要与同学进行交流与合作,及时发现问题并解决问题,也使自己了解到自身的不足,所以在今后的学习中,要更加认真学习,并多与同学和老师交流,这样能够更好的学好Java,同时我们要多敲代码,只有这样,我们才能熟悉代码,做到熟能生巧,才能更好的学好java,敲好java代码。

 

顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: 柯侧耳倾听者
    • 等级: 初级设计师
    • 积分: 2220
    • 代码: 64 个
    • 文章: 64 篇
    • 随想: 5 条
    • 访问: 43 次
    • 关注

    标签

    最新提问

      站长推荐