作业3
-
如何开发Java程序图形界面?它需要引入哪些包?
-
什么是布局管理器,它有什么作用?
-
Frame类和Panel类的默认布局器分别是什么?
-
请说明FlowLayout布局方式的特点?
-
在Java中,什么是事件?简述处理事件的机制。
-
绘制下图表格的图案。(提示:确定坐标,画直线、画圆等)
-
编写Java程序,创建一个窗体,并实现交互。在窗体内“单击鼠标左键”,在光标处绘制一个“绿圆”;窗体内“单击鼠标右键”,在光标处绘制一个“红色方框”;窗体内“双击鼠标左键”,清空所有已画“圆”和“方”。
答:1. 制作图形界面首先要创建一个窗口容器并在窗口中添加各种组件,接着在指定组件属性和在窗口中的位置,构成图形界面的外观效果,然后定义图像界面的事件和各种组件对不同事件的响应,从而实现图形界面和用户的交互。需要引用的包有:AWT、Swing
2. 布局管理器是一个实现Layout Manager接口的类的实例;布局管理器的作用包括设置计算容器的最佳和最小尺寸以及将容器中的组件大小和位置作合适的安排。
3. Frame默认的是BorderLayout布局管理器;Panel默认的是FlowLayout布局管理器
4. FlowLayout的布局策略是将容器中的组件按照加入的先后顺序从左向右排列。如果一行排满转下一行继续,每行均采取居中排列。是Panel型容器的默认布局,即Panel及其子类创建的容器对象,如果不专门为其指定布局,则它们的布局就是FlowLayout型布局。
5. 事件指一个描述事件源状态改变的对象 。通过鼠标、键盘与 GUI 界面直接或间接交互都会生成事件。事件处理机制:Java 对事件处理采用委托事件模型的形式。组件可以发起(触发)一个事件。每种事件的类型由单独的类表示。当事件被触发时,它将被一个或多个“监听器”接收,监听器负责处理事件。
6.
`import java.awt.*;
import javax.swing.*;
public class oop extends JFrame {
MyPanel mp = null;
public static void main(String[] args) {
oop qwe = new oop();
}
public oop() {
mp = new MyPanel();
this.add(mp);
this.setSize(315, 330);
this.setVisible(true);
}
}
class MyPanel extends JPanel //我自己的面板,用于绘图和实现绘图区域
{
//覆盖JPanel的paint方法
//Graphics是绘图的重要类,可以理解成一支画笔
public void paint(Graphics g) {
//画圆
g.drawOval(30, 30, 40, 40);
g.drawOval(130, 130, 40, 40);
g.fillOval(130, 130, 40, 40);
//画直线
g.drawLine(0, 200, 300, 200);
g.drawLine(0, 100, 300, 100);
g.drawLine(100, 0, 100, 300);
g.drawLine(200, 0, 200, 300);
g.drawLine(230, 230, 270, 270);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class WindowMouse extends JFrame{
WindowMouse(){
setTitle("鼠标绘图");//设置窗口标题
setBounds(100,100,450,450);//设置窗口显示位置和大小
setVisible(true);//显示窗体
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 AWT{
public static void main(String args[]){
new WindowMouse();
}
}
`