java手记---swing类和awt类

Graphics a;
a.drawOval(size.width/4,size.height/4,size.width/2,size.height/2);此时椭圆在中心。
a.drawString("Hello world gj",20,200);///20是最左的象素坐标,200是基线

Cbox()
{
setLayout(new FlowLayout());
Checkbox cb = new Checkbox("he");//复选框有2个构造器Checkbox(String s)&Checkbox(String s,boolean state).
add(cb);///if there isn't this statement, the Checkbox won't appear.
setSize(200,200);
}
CheckboxGroup cbg = new CheckboxGroup();
Checkbox(String s,boolean state,CheckboxGroup cbg)&Checkbox(String s,CheckboxGroup cbg,boolean state);/这样可以建单选框。
Checkbox(String s)用来建复选框与单选框。
Choice()用来建下拉式单选。
Frame(String s)用来建窗口。
Button(String s)用来建按钮。
Label(String s)用来建标签。
setLayout(new FlowLayout());
Choice c = new Choice();
for(int i = 0;i < fontFamily.length;i++)
c.add(fontFamily[i]);
add(c);
c = new Choice();/这样相当于新建一个下拉单选框。
for(int i = 0;i < size.length;i++)
c.add(size[i]+"");
add(c);
setSize(200,200);

public class TestFrame extends Frame {
public void doDemo(){
Button b = new Button("Press Me!");
b.addActionListener(new ButtonHandler());/在这里添加实现
add(b,BorderLayout.CENTER);
pack();//如果没有这句,最初按钮是看不到的。最大化后才会看到。
setVisible(true);
}
public static void main(String args[]) {
TestFrame f = new TestFrame();
f.doDemo();
}
以下是一个内部类
public class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
setTitle("Button's label is :" + e.getActionCommand());这里getActionCommand()函数返回的是控件的名称。
}
}
}
如果main中加上这个函数
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});//就可以实现窗口关闭功能。
public class MouseMoveHandler implements MouseListener {
private Color source = null;
public void mouseEntered(MouseEvent e) {
source = e.getComponent().getBackground();
e.getComponent().setBackground(Color.PINK);
}
public void mouseExited(MouseEvent e) {
e.getComponent().setBackground(source);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
}
awt提供的控件:
Button
Label
Checkbox
CheckboxGroup
Choice
TextField
TextArea
List
Font
Image
Canvas
Graphics2D
Dialog
ScrollPanel
Menu
Toolkit
InputMethod
textTabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);/将标签放在下部。
privateScrollPane = new JScrollPane();
privateTextPane = new JTextPane();
privateTextPane.setEditable(true);///这是把JTextPane设置为可以编辑的。(是否能让用户编辑)
// privateTextPane.setName("");//这句似乎没什么用。
privateScrollPane.setViewportView(privateTextPane);///JScrollPane可以显示JTextPane上的内容。
textTabbedPane.addTab("private",privateScrollPane);//这句才是把最重要的。把JScrollPane放在JTabbedPane上。
add(textTabbedPane)///把JTabbedPane放在JFrame上。

在编写菜单的时候不需写setLayout(new FlowLayout());
如果在编写按钮的时候不写上面的代码,那么按钮就会变的很大。上一行代码是布局管理器。
应该始终有一个File菜单,它应该始终在菜单栏的最左边。菜单项New,Open...和Close(如果有的话)
应该按上面的次序出现。New应该是第一项,Exit应该是最后一项。
如果有Edit项的话,应该为第二项,它应该有copy,paste,cut等功能。
如果有help项的话,应该是最后一项。
如果不把菜单加到菜单栏上,那么菜单栏就不会出现。
TextArea ta = new TextArea(10,20);/用于创建文本框。第一个参数为高度,第二个为长度。
Scrollbar sb = new Scrollbar(Scrollbar.HORIZONTAL);用于建一个水平方向的控制条。
///有两种布局管理器:流程布局管理器和边框布局管理器。
setLayout(new FlowLayout(FlowLayout.LEFT));这便是流程管理器
///边框管理器是add();使用边框管理器的容器只能有五个构件。
///add(sb,"North");//这就是边框管理器。之前不再用setLayout(new FlowLayout());
add(p,"South");//“South”一定要大写。
//调用了边框管理器后,构件的大小就不再受传入参数的制约。如果不指明就将占据剩余的整个空间。
Panel p = new Panel();//创建新面板。
p.add(new Button("HI"));
p.add(new TextField("ldldl",10));//可以将几个构件锁在一起。
/流程管理器可以兑现构件的优先大小。而边框管理器不行。此外还有3个管理器:
/CardLayout(),仅允许在任何时候只有一个构件是可见的。
GridLayout(),GridBagLayout().
MenuBar mb = new MenuBar();
setMenuBar(mb);///此句用于设置菜单栏。
//new JMenu("String").add(new JMenuItem("String"));菜单添加菜单项
///new JMenuBar().add(new JMenu("String"))///菜单栏添加菜单
/// new JFrame("String").setJMenuBar(new JMenuBar());/菜单栏放置在窗体上。

当一个构件和一个paint()方法都负责屏幕的同一部分时,总是构件获胜。
(1)创建构件。
(2)创建实现*Listener接口的收听者。
(3)构造该收听者的一个实例。
调用该构件add*Listener()方法,同时传入刚建成的收听者类的实例。
public SelfListener()
{
setLayout(new FlowLayout());
for(int i = 0;i < btn.length;i++)
{btn[i] = new Button(s[i]);
btn[i].addActionListener(this);
add(btn[i]);
}
tf = new TextField(25);
add(tf);
setSize(200,300);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btn[0])
nCon -= 1;
else if(e.getSource() == btn[1])
nCon -= 2;
else
nCon -= 3;
tf.setText(nCon + " Left.");
if(nCon < 3)
btn[2].setEnabled(false);
if(nCon < 2)
btn[1].setEnabled(false);
if(nCon == 0)
{
Label ab = new Label("win!");//在这里会出现混乱。//win!迟迟不出现。只有变化窗口的时候才会
add(ab,"South");///出现。
btn[0].setEnabled(false);
}
}
使用repaint()方法可以刷屏并调用paint()。
当画的图形位置不对时,有可能在屏幕上显示不出来。

tf.setText("Font Color is "+ c.getItem(c.getSelectedIndex())+/此处用于返回Choice所选项。
". Font Size is " + cb[i].getLabel() );//此处用于返回checkbox所选项。
当程序启动时paint()调用。当图文框被完全覆盖时,paint()被调用,当图文框放大时,paint()被调用。被最小化再还原时调用。
//其余时间都不会调用paint()。
btn[i].addActionListener(this);
btn[i].addActionListener(this);//此时进行两次调用。点一次鼠标有两次动作。
///想让一个任意的类成为一个动作收听者,光实现一个actionperformed()的方法是不够的。因为单凭这一点不能
///认为它实现了ActionListener接口。
///当类中函数要用到其它函数中的变量时,特别是构件要声明成类的变量而不是函数中的变量。

/publicTextPane是放在publicScrollPane上的,而publicScrollPane是放在textTabbedPane上的。
/这样使用:
publicTextPane.setEditable(false);///这个面板是否可以操作。
publicTextPane.setName("");//?似乎没有什么用。
publicScrollPane.setViewportView(publicTextPane);//让面板显示
textTabbedPane.addTab("public",publicScrollPane);//在textTabbedPane上添加滚动条。
/ frameClient.getContentPane().add(new JButton(),
BorderLayout.CENTER);/这句话用于JFrame添加控件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值