姓名: 学号: 专业班级:
作业3
- 如何开发Java程序图形界面?它需要引入哪些包?
- 什么是布局管理器,它有什么作用?
- Frame类和Panel类的默认布局器分别是什么?
- 请说明FlowLayout布局方式的特点?
- 在Java中,什么是事件?简述处理事件的机制。
- 绘制骰子四点的图案。(正方形内四个圆形)
- 编写Java程序,创建一个窗体,并实现交互。在窗体内“单击鼠标左键”,在光标处绘制一个“绿圆”;窗体内“单击鼠标右键”,在光标处绘制一个“红色方框”;窗体内“双击鼠标左键”,清空所有已画“圆”和“方”。
- 提交作业说明:
3月27日之前提交作业,命名方式为 学号+姓名+作业3
=====================================================================
答:1、制作图形化界面是要创建一个窗口,并在窗口中添加各种组件,然后指定组件的属性和在窗口的位置与颜色,接着在指定的图形化界面定义对不同的事情的反应,实现图形化界面和用户的交互。需要引包:AWT,Swing
2、布局管理器是实现Layout Manager接口类的实例,布局管理器的作用是设计窗口的最佳大小和最佳颜色,以及窗口中的组件大小与位置。
4、FlowLayout:可以创建一个中对齐的布局对象。使用FlowIayout布局的容器使用add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,在该方法中设置大小无效,需要调用其他的类。
5、事件,是封装了事件源对象及跟事件相关的信息。事件处理机制:先生成监听器,在发生事件的对应组件上注册监听器,当注册监听器的组件上发生事件时,将事件对象返回给监听器,最后监听器调用相应的方法处理事件。
第6题代码:
import javax.swing.*;
import java.awt.*;
class ShowLayout extends JFrame{
PanelDiceLayout PanelDice;
ShowLayout(){
PanelDice=new PanelDiceLayout();//创建面板实例
add(PanelDice);//将面板实例添加到窗口容器中
setBounds(100,100,400,400);//设置窗口显示位置和大小
setTitle("三点的骰子");//设置窗口标题
setVisible(true);//显示窗体
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//结束窗口所在的应用程序
}
}
class PanelDiceLayout extends JPanel{//创建内部面板
public void paint(Graphics g){//重写paint()方法
Graphics2D g2 = (Graphics2D)g;//将抽象父类的Graphics强制转换为子类Graphics2D
//g2.setStroke(new BasicStroke());可设置线条粗细
g2.setColor(Color.black);//设置当前颜色为黑色
g2.drawRoundRect(150,100,100,100,20,20);//绘制一个概略的圆角矩形
g2.setColor(Color.red);//设置当前颜色为红色
g2.fillOval(170,120,20,20);//用当前颜色填充指定矩形界定的椭圆
g2.fillOval(210,120,20,20);//
g2.fillOval(210,160,20,20);//
g2.fillOval(170,160,20,20);//
}
}
public class a1{
public static void main(String args[]){
new ShowLayout();
}
}
第七题代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class WindowMouse extends JFrame{
WindowMouse(){
setTitle("鼠标绘图");//设置窗口标题
setBounds(100,100,450,450);//设置窗口显示位置和大小
setVisible(true);//显示窗体
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//结束窗口所在的应用程序
addMouseListener(new MouseAdapter(){//重写监听器
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==1){//单击时
if(e.getButton()==e.BUTTON1){//单击左键时
Graphics g=getGraphics();
g.setColor(Color.green);//设置当前颜色为绿色
g.fillOval(e.getX(),e.getY(),60,60);//用当前颜色填充由指定矩形界定的椭圆
}
else if(e.getButton()==e.BUTTON3){//单击右键时
Graphics g=getGraphics();
g.setColor(Color.red);//设置当前颜色为红色
g.fillRect(e.getX(),e.getY(),60,60);//用当前颜色填写指定的矩形
}
}
else if(e.getClickCount()==2){//双击时
if(e.getButton()==e.BUTTON1){//双击左键时
repaint();//清屏
}
}
}
});
}
}
public class a2{
public static void main(String args[]){
new WindowMouse();
}
}