1.Graphics 类

源于网络的类方法:

1、画直线 drawLine(int x1,int y1,int x2,int y2); // 直线的两个点
2、画矩形边框 drawRect(int x,int y,int width,int height);
3、画椭圆边框 drawOval(int x,int y,int width,int height);
4、填充矩形 fillRect(int x,int y,int width,int height);
5、填充椭圆 fillOval(int x,int y,int width,int height);
6、画图片 drawImage(Image img.int x,int y,..);
7、画字符串 drawString(String str,int x,int y);
8、设置画笔的字体 setFont(Font font);
9、设置画笔的颜色 setColor(Color c);


2.分析项目

(1)shape类

package shapes;     
import java.awt.Graphics;    //导入graphics类
public abstract class Shape {
public abstract void draw(Graphics g);     //抽象函数不能有{}
}

这里定义了一个抽象类,关键词是abstract。这个类中如果有一个函数是抽象的,那么则个类一定是抽象的。

shape这个类型是抽象的,它的子类如果继承了父类,那么子类中必须具体化父类中的所有方法。


牵扯到swt类的东西,昨晚开始学习。

主要分清楚,他们的子类父类:(借用前辈的图,侵权删除)

component 是组件的意思,然后子类是container 是容器。

然后window 和panel是不一样。

frame从容器上继承,可以添加panel。

然后frame默认为不可见,需要setvisabell()

Frame是框架窗体,有边框的;Panel是面板,无边框。一般把几个Panel加到一个Frame上。

frame 是顶级容器,不可以自身嵌套。panel不是则需要嵌套在顶级容器中得以显示,且可以自身嵌套。

另外一般在panel中置入组件。

我们用得最多的JFrameJPanel,就是FramePanelSwing下的扩展(JFrameFr

ame子类和JPanelPanel的子类)。()这个就是shape中的重点

另外还有frame.pack()方法。用于设置最佳的尺寸。

[JAVA学习]shape绘画图形代码分析

在AWT中,提供了五种布局管理器:BorderLayout FlowLayout GridLayout CardLayout GridBagLayout

BorderLayout FlowLayout GridLayout(已经分析过了,但是网站数据没有保存,好奇怪)

4.CardLayout (类似堆叠起来的扑克牌,只有最上面的一张会被看到)

构造器:

 CardLayout ()默认构造器

CardLayout (int hgap,int vgap)  hgap是指 有一点不一样的东西就是 hgap是指卡片与左右边界的距离,vgap是与上下边界的间距

first(container target) last(container target) previous(container target)显示前一个卡片 next(container target)显示最后一个卡片

show(container target,string name)显示名字为name的卡片


绝对定位:

可以直接将setlayout 直接设置成null 这样可以随意定位

gridbaglayout虽然功能强大,但是确实太复杂了,让我都没怎么看懂它。


BoxLayout(Container target,int axis):制定基于target容器创建的boxlayout布局管理器,该布局管理器按照axis方向排列。

axis有BoxLayout.X_AXIS 横向和BoxLayout.Y_AXIS 纵向两个方向。

boslayout 通常和box容器结合使用,box是一个特殊的容器。它有一点像panel容器,但该容器默认使用boxlayout

box提供了两个静态方法来创建box对象:

createHorizontalBox():创建一个水平排列组件的box容器

createVerticalBox():创建垂直排列组件的Box容器

一旦获得了BOX容器,就可以使用box来盛装普通gui组件,然后再将这些box组件添加到其他容器中。

create Horizontal/vertical Glue() glue是可以随着窗口变动的边距

create Horizontal(垂直可改变)/vertical(水平可改变) Strut(int width) 

createRigidArea(Dimension d)创建指定宽度,高度的GigidArea  不可拉伸的间距

布局学完终于要开始学awt了,虽然这些也算awt。


awt常用的组件

基本:Button,Canvsa,Checkbox,CheckboxGroup,Choice,Frame,lable.list,

Panel(基本容器类),Scrollbar,ScrollPane(带水平垂直的滚动条)

TextArea(多行文本域),TextField(单行文本框)


通过学习这些组件,可以知道panel是可以嵌套在box中的,组件可以多重嵌套。

另外值得注意的是每个组件的构造器。

Checkbox male=new Checkbox("男",cbg,true);  //成组的复选框,只能选定一个 Checkbox("",组,状态)
Checkbox female=new Checkbox("女",cbg,false);
Checkbox married=new Checkbox("是否已婚",false); //单个选框,中间的参数组去掉,只留下字段以及选中的状态
Choice colorChooser =new Choice();//定义一个下拉选框
List colorList=new List(6,true);
TextArea ta=new TextArea(5,20);//多行文本框,定义了5行 20列的文本框
TextField name=new TextField(50); //单行文本框

对话框

对话框非常依赖其他窗口,就是通常有一个parent的窗口

对话框有 nonmodel 以及model两种,当某个模式的对话框被打开以后,总是在它被以来的窗口上

在模式对话框被关闭之前,它依赖的窗口无法获得焦点。

对画框有多个重载的构造器,三个参数,好像暂时用不到

Dialog存在一个子类,叫做FileDialog,分别可支持parent,title,mode三个构造参数

其中parent,title指定文件对话框的所属父窗口和标题,而mode用于指定该窗口用于打开文件和保存文件

FileDialog提供如下两个方法,参数值:FileDialog.LOAD FileDialog.SAVE

getDirectory():采取被打开/保存的绝对路径

getFile():获取Filedialog 被打开/保存的文件名


终于学习到事件处理了,现在可以添加事件了。

在awt事件中所有事件的处理,必须由特定对象(事件监听器)来处理,而Frame和组件本身没有事件处理能力。

java事件模型的流程:

Event Source:事件源 :事件发生的场所,通常就是各个组件,例如按钮,窗口,菜单

Event 事件 事件封装了GUI组件上发生的特定事情(通常就是一次用户操作)

Event Listener 事件监听器 负责监听事件源所发生的事件,并对各种事情做出响应处理。



相关文章:

  • 2021-08-18
  • 2022-01-19
  • 2021-06-28
  • 2022-01-07
  • 2021-11-30
  • 2022-01-02
猜你喜欢
  • 2022-02-11
  • 2022-12-23
  • 2021-12-29
  • 2022-12-23
  • 2022-12-23
  • 2021-11-01
  • 2022-01-02
相关资源
相似解决方案