13. 案例1001 import java.awt.*;
public class TestJFrame {
public static void main( String args[]) {
JFrame f = new JFrame("My First Test");
f.setSize( 170,100);
f.setVisible( true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}
24. BorderLayout 布局管理器BorderLayout型布局容器尺寸缩放原则
北、南两个区域只能在水平方向缩放(宽度可调整)
东、西两个区域只能在垂直方向缩放(高度可调整)
中部可在两个方向上缩放North South West Eest Center
25. 案例1004import java.awt.*;
public class TestBorderLayout {
public static void main(String args[]) {
JFrame f = new JFrame("Border Layout");
JButton bn = new JButton("BN");
JButton bs = new JButton("BS");
JButton bw = new JButton("BW");
JButton be = new JButton("BE");
JButton bc = new JButton("BC");
f.add(bn, "North");
f.add(bs, "South");
f.add(bw, "West");
f.add(be, "East");
f.add(bc, "Center");
f.setSize(200,200);
f.setVisible(true);
}
}
26. 3.3 GridLayout 布局管理器GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等.
组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下.
在GridLayout构造方法中指定分割的行数和列数.
new GridLayout(3,4);
27. 案例1005import java.awt.*;
public class TestGridLayout {
public static void main(String args[]) {
JFrame f = new JFrame("GridLayout Example");
JButton b1 = new JButton("b1");
JButton b2 = new JButton("b2");
JButton b3 = new JButton("b3");
JButton b4 = new JButton("b4");
JButton b5 = new JButton("b5");
JButton b6 = new JButton("b6");
f.setLayout (new GridLayout(3,2));
f.add(b1); f.add(b2);
f.add(b3); f.add(b4);
f.add(b5); f.add(b6);
f.pack(); f.setVisible(true);
}
}
33. import java.awt.*;
class SubJPanel extends JPanel{
public void paint(Graphics g){
g.drawString("this is a drawing test!",20,20);
g.drawLine(30,60,100,120);
g.draw3DRect(60,50,70,30,false);
}
}
public class AWTDrawing2 {
private JFrame f = new JFrame(" Hello Out There!");
private JPanel p = new SubJPanel();
public void launchJFrame() {
f.add(p);
f.setSize(170,170);
f.setBackground( new Color(89,145,145));
f.setVisible( true);
}
public static void main( String args[]) {
AWTDrawing2 guiWindow = new AWTDrawing2();
guiWindow.launchJFrame();
}
}AWT 绘图举例
37. 案例1009import java.awt.*;
import java.awt.event.*;
public class TestActionEvent {
public static void main(String args[]) {
JFrame f = new JFrame("Test");
JButton b = new JButton("Press Me!");
Monitor bh = new Monitor();
b.addActionListener(bh);
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("a JButton has been pressed");
}
}
46. import java.awt.*;
import java.awt.event.*;
public class TestMultiListener implements
MouseMotionListener,MouseListener {
JFrame f = new JFrame("多重监听器测试");
TextField tf = new TextField(30);
public TestMultiListener(){
Label l = new Label("请按下鼠标左键并拖动");
l.setBackground(Color.red);
f.add(l,"North");
f.add(tf, "South");
f.setBackground(new Color(120,175,175));
f.addMouseMotionListener(this);
f.addMouseListener(this);
f.setSize(300, 200);
f.setVisible(true);
}
public static void main(String args[]) {
TestMultiListener t = new TestMultiListener();
} //未完,接下页多重监听器举例
47. public void mouseDragged(MouseEvent e) {
String s = "鼠标拖动到位置(" + e.getX() + "," + e.getY() + ")";
tf.setText(s);
}
public void mouseEntered(MouseEvent e) {
String s = "鼠标已进入窗体";
tf.setText(s);
}
public void mouseExited(MouseEvent e) {
String s = "鼠标已移出窗体";
tf.setText(s);
}
// 未使用的MouseMotionListener和MouseListener接口中的方法,也必须实现
public void mouseMoved(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
}
50. 5.5 内部类在事件处理中的使用案例10-12
import java.awt.event.*;
public class TestInner {
JFrame f = new JFrame("内部类测试");
TextField tf = new TextField(30);
public TestInner(){
f.add(new Label("请按下鼠标左键并拖动"), "North");
f.add(tf, "South");
f.setBackground(new Color(120,175,175));
InnerMonitor im = new InnerMonitor();
f.addMouseMotionListener(im);
f.addMouseListener(im);
f.setSize(300, 200);
f.setVisible(true);
}
public static void main(String args[]) {
TestInner t = new TestInner ();
} //未完,接下页
51. class InnerMonitor implements MouseMotionListener, MouseListener {
public void mouseDragged(MouseEvent e) {
String s = "鼠标位置(" + e.getX() + "," + e.getY() + ")";
tf.setText(s);
}
public void mouseEntered(MouseEvent e) {
String s = "鼠标已进入窗体";
tf.setText(s);
}
public void mouseExited(MouseEvent e) {
String s = "鼠标已移出窗体";
tf.setText(s);
}
public void mouseMoved(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
}//end of inner class InnerMonitor
}//end of class TestInner
52. 普通内部类
53. 静态内部类
54. 案例1013import java.awt.*;
import java.awt.event.*;
public class TestAnonymous {
JFrame f = new JFrame("匿名内部类测试");
TextField tf = new TextField(30);
public TestAnonymous(){
f.add(new Label("请按下鼠标左键并拖动"), "North");
f.add(tf, "South");
f.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e) {
String s = "鼠标拖动到位置(" + e.getX() + "," + e.getY() + ")";
tf.setText(s);
}
});
f.setSize(300, 200); f.setVisible(true);
}
public static void main(String args[]) {
TestAnonymous t = new TestAnonymous();
}
}
55. 案例1014import java.awt.*;
import java.awt.event.*;
public class TestAnonymous2 {
JFrame f = new JFrame("Test");
TextField tf = new TextField(10);
JButton b1 = new JButton("Start");
public TestAnonymous2(){
f.add(b1,"North");
f.add(tf,"South");
b1.addActionListener(new ActionListener(){
private int i;
public void actionPerformed(ActionEvent e) {
tf.setText(e.getActionCommand() + ++i);
}
});
f.pack();
f.setVisible(true);
}
public static void main(String args[]) {
new TestAnonymous2();
}
}