AWT:一个GUI类库,抽象窗口工具集(CAbstract Window Toolkit)
使用AWT创建的图形界面应用和所在的运行平台有相同的界面风格
Componet:
代表一个能以图片化形式显示出来,并可与用户交互的对象,例如Button代表一个按钮,TextField代表一个文本框等;
MenuComponent:
代表图形界面的菜单组件,包括MenuBar(菜单条)、MenuItem(菜单项)等子类
Container:
是一种特殊的Componet,它代表一种容器,可以盛装普通的Component
可能出现的中文编码问题解决办法:
Window:
public class WindowDemo { public static void main(String[] args) { Frame frame = new Frame("window"); frame.setLocation(100, 100); //设置位置 frame.setSize(500, 300); //设置窗口大小 frame.setVisible(true); // 设置可见 } }
Panel:
public class PanelDemo { public static void main(String[] args) { //Panel对象必须依附于Window //创建window对象 Frame frame = new Frame("panel"); //创建Panel对象 Panel panel = new Panel(); panel.add(new TextField("textField")); // 添加文本框 panel.add(new Button("button")); // 添加按钮 //panel添加到window中 frame.add(panel); //设置window位置和大小 frame.setBounds(100, 100, 500, 300); //设置window可见 frame.setVisible(true); } }
ScrollPane:
public class ScrollPanelDemo { public static void main(String[] args) { //创建window对象 Frame frame = new Frame("ScrollPane"); //创建Panel对象 ScrollPane scrollPane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS); //设置滚动条总是显示 scrollPane.add(new TextField("textField")); scrollPane.add(new Button("button")); //panel添加到window中 frame.add(scrollPane); //设置window位置和大小 frame.setBounds(100, 100, 500, 300); //设置window可见 frame.setVisible(true); } }
public class FlowLayoutDemo { public static void main(String[] args) { Frame frame = new Frame("FlowLayout"); // 设置布局管理器并且左对齐,水平和垂直间距都是20 frame.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 20)); for (int i = 0; i < 100; i++) { frame.add(new Button("button" + i)); } //设置最佳大小 frame.pack(); frame.setVisible(true); } }
public class BorderLayoutDemo { public static void main(String[] args) { Frame frame = new Frame("BorderLayout"); // 水平间距30, 垂直间距10 frame.setLayout(new BorderLayout(30, 10)); frame.add(new Button("North"), BorderLayout.NORTH); frame.add(new Button("South"), BorderLayout.SOUTH); frame.add(new Button("East"), BorderLayout.EAST); frame.add(new Button("West"), BorderLayout.WEST); frame.add(new Button("Center"), BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } }
public class GridLayoutDemo { public static void main(String[] args) { Frame frame = new Frame("GridLayout"); // 添加输入文本框 Panel p_text = new Panel(); p_text.add(new TextField(30)); frame.add(p_text, BorderLayout.NORTH); //添加数组 Panel p_num = new Panel(); // 3行5列 p_num.setLayout(new GridLayout(3, 5, 4, 4)); for (int i = 0; i < 10; i++) { p_num.add(new Button(String.valueOf(i))); } p_num.add(new Button("+")); p_num.add(new Button("-")); p_num.add(new Button("*")); p_num.add(new Button("/")); p_num.add(new Button(".")); frame.add(p_num); frame.pack(); frame.setVisible(true); } }
public class CardLayoutDemo { public static void main(String[] args) { Frame frame = new Frame("CardLayout"); CardLayout cardLayout = new CardLayout(); //中间区域panel Panel p1 = new Panel(); p1.setLayout(cardLayout); String[] names = {"第一张","第二张","第三张","第四张","第五张"}; for (int i = 0; i < names.length; i++) { p1.add(names[i], new Button(names[i])); } frame.add(p1); //五个按钮区域 Panel p2 = new Panel(); Button b1 = new Button("上一张"); Button b2 = new Button("下一张"); Button b3 = new Button("第一张"); Button b4 = new Button("最后一张"); Button b5 = new Button("第三张"); //创建事件监听器,监听按钮的点击动作 ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { // 获取到按钮上的文字 String actionCommend = actionEvent.getActionCommand(); switch (actionCommend) { case "上一张": cardLayout.previous(p1); break; case "下一张": cardLayout.next(p1); break; case "第一张": cardLayout.first(p1); break; case "最后一张": cardLayout.last(p1); break; case "第三张": cardLayout.show(p1, "第三张"); break; } } }; //把事件监听器和按钮绑定到一起 b1.addActionListener(listener); b2.addActionListener(listener); b3.addActionListener(listener); b4.addActionListener(listener); b5.addActionListener(listener); p2.add(b1); p2.add(b2); p2.add(b3); p2.add(b4); p2.add(b5); frame.add(p2, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } }
public class BoxLayoutDemo { public static void main(String[] args) { Frame frame = new Frame("BoxLayout"); //创建BoxLayout对象,该对象存放的组件是垂直存放 BoxLayout boxLayout = new BoxLayout(frame, BoxLayout.Y_AXIS); frame.setLayout(boxLayout); frame.add(new Button("button1")); frame.add(new Button("button2")); frame.pack(); frame.setVisible(true); } }
public class BoxDemo { public static void main(String[] args) { Frame frame = new Frame("Box"); //创建水平排列组件的Box容器 Box hBox = Box.createHorizontalBox(); hBox.add(new Button("h_button1")); hBox.add(Box.createHorizontalGlue()); // 在两个方向上拉伸 hBox.add(new Button("h_button2")); hBox.add(Box.createHorizontalStrut(30)); //固定分割长度 hBox.add(new Button("h_button3")); //创建垂直排列组件的Box容器 Box vBox = Box.createVerticalBox(); vBox.add(new Button("v_button1")); vBox.add(Box.createVerticalGlue()); vBox.add(new Button("v_button2")); vBox.add(Box.createVerticalStrut(30)); vBox.add(new Button("v_button3")); //添加到frame中 frame.add(hBox, BorderLayout.NORTH); frame.add(vBox); frame.pack(); frame.setVisible(true); } }
组件名 | 功能 |
---|---|
Button | 按钮 |
Canvas | 用于绘图的画布 |
Checkbox | 复选框组件(也可当单元框组件使用) |
CheckboxGroup | 用于将多个Checkbox组件组合成一组,一组Checkbox组件将只有一个被选中,即全部变成单选框组件 |
Choice | 下拉选择框 |
Frame | 窗口,在GUI程序里通过该类创建窗口 |
Label | 标签类,用于放置提示性文本 |
List | 列表框组件,可以添加多项条目 |
Panel | 不能单独存在基本容器类,必须放在其他容器中 |
Scrollbar | 滑动条组件。如果需要用户输入位于某个范围的值,就可以使用滑动条组件,比如调色板中设置RGB的三个值所用的滑动条。当创建一个滑动条时,必须指定它的方向、初始值、滑块的大小、最小值和最大值。 |
ScrollPane | 带水平及垂直滑动条的容器组件 |
TextArea | 多行文本域 |
TextField | 单行文本域 |
public class BasicComponentDemo { Frame frame = new Frame("基本组件"); //多行文本区域 TextArea ta = new TextArea(5, 20); //下拉选择框 Choice colorChooser = new Choice(); //选择框 CheckboxGroup cbg = new CheckboxGroup(); Checkbox male = new Checkbox("男", cbg, true); Checkbox female = new Checkbox("女", cbg, false); //选择框 Checkbox isMarried = new Checkbox("是否已婚?"); //单行文本区域 TextField tf = new TextField(50); Button ok = new Button("确认"); //列表框 List colorList = new List(6, true); public void init(){ //组装底部 Box bBox = Box.createHorizontalBox(); bBox.add(tf); bBox.add(ok); frame.add(bBox, BorderLayout.SOUTH); //组装选择部分 colorChooser.add("红色"); colorChooser.add("蓝色"); colorChooser.add("绿色"); Box cBox = Box.createHorizontalBox(); cBox.add(colorChooser); cBox.add(male); cBox.add(female); cBox.add(isMarried); frame.add(cBox); //组装文本域和选择部分 Box topLeft = Box.createVerticalBox(); topLeft.add(ta); topLeft.add(cBox); frame.add(topLeft); //组装顶部左边和列表框 Box top = Box.createHorizontalBox(); colorList.add("红色"); colorList.add("绿色"); colorList.add("蓝色"); top.add(topLeft); top.add(colorList); frame.add(top); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { BasicComponentDemo bc = new BasicComponentDemo(); bc.init(); } }