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放在J
TabbedPane上。
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是放在textTabbedPan
e上的。
/////////这样使用:
publicTextPane.setEditable(false);///这个面板是否可以操作。
//// publicTextPane.setName(“”);//////////////////?似乎没有什么用。
publicScrollPane.setViewportView(publicTextPane);//让面板显示
textTabbedPane.addTab(“public”,publicScrollPane);//在textTabbedPane上添加滚动条。

///////// frameClient.getContentPane().add(new JButton(),
BorderLayout.CENTER);/////////这句话用于JFrame添加控件。

  • 本文作者: 帐前卒
  • 本文链接: http://chillyc.info/2006/979170/
  • 版权声明: 本博客所有文章除特别声明外,只能复制超链接地址,且必须注明出处!