教材学习内容总结
1.Java Swing
组件与容器:
Java把component类的子类或间接子类创建的对象称为一个组件;
Java把container的子类或间接类创建的对象称为一个容器;
向容器添加组件: public add();
移除组件:removeAll()移除所有组件; remove(component c)方法 ,移除指定组件c;
容器本身也是一个组件,可以把一个容器添加到另一个容器中实现容器的嵌套;
每当容器添加新的组件或移掉组件时,应当让容器调用validate()方法,保证容器中的组件能正确显示出来。
2.窗口
Java提供的JFrame类的实例就是一个底层容器,也就是窗口。
其他组件必须被添加到底层容器中。
当需要一个窗口时,可使用JFrame或其子类创建一个对象。
窗口也是容器,可以添加组件。
注:窗口默认被系统添加到显示器屏幕上,因此不允许将一个窗口添加到另一个容器中。
2.1常用方法:
JFrame()//创建一个无标题的窗口。
JFrame(String s)//创建标题为s的窗口。
public void setBounds(int a,int b,int width,int height)//设置窗口的初始位置是(a,b),即距屏幕左面a个像素,距屏幕上方b个像素,窗口的宽是width,高是height。
public void setSize (int width,int height)//设置窗口的大小。
public void setLocation (int x,int y)//设置窗口的位置,默认位置是(0,0)。
public void setVisible (boolean b)//设置窗口是否可见,默认不可见。
public void setResizable (boolean b)//设置窗口是否可调整大小,默认可调整大小。
public void dispose () //撤销当前窗口,并释放当前窗口所使用的资源。
public void setExtendedState(int state) //设置窗口的扩展状态,其中参数state取JFrame类中的下列类常量:
MAXIMIZED_HORIZ (水平方向最大化),
MAXIMIZED_VERT (垂直方向最大化),
MAXIMIZED_BOTH (水平、垂直方向都最大化)。
public void setDefaultCloseOperation(int operation)该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。其中的参数operation取JFrame类中的下列int型static常量,程序根据参数operation取值做出不同的处理:
DO_NOTHING_ON_CLOSE(什么也不做),
HIDE_ON_CLOSE(隐藏当前窗口),
DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗体占有的其他资源),
EXIT_ON_CLOSE(结束窗口所在的应用程序)。
2.2菜单条、菜单、菜单项
菜单项∈菜单∈菜单项
例:
Example9_2.java
public class Example9_2 {
public static void main(String args[]) {
WindowMenu win=new WindowMenu("带菜单的窗口",20,30,200,190);
}
}
WindowMenu.java
import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class WindowMenu extends JFrame {
JMenuBar menubar;
JMenu menu,subMenu;
JMenuItem itemLiterature,itemCooking;
public WindowMenu(){}
public WindowMenu(String s,int x,int y,int w,int h) {
init(s);
setLocation(x,y);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
void init(String s){
setTitle(s); //设置窗口的标题
menubar=new JMenuBar();
menu=new JMenu("菜单");
subMenu=new JMenu("体育话题");
itemLiterature=new JMenuItem("文学话题",new ImageIcon("a.gif"));
itemCooking=new JMenuItem("烹饪话题",new ImageIcon("b.gif"));
itemLiterature.setAccelerator(KeyStroke.getKeyStroke('A'));
itemCooking.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
menu.add(itemLiterature);
menu.addSeparator(); //在菜单之间增加分隔线
menu.add(itemCooking);
menu.add(subMenu);
subMenu.add(new JMenuItem("足球",new ImageIcon("c.gif")));
subMenu.add(new JMenuItem("篮球",new ImageIcon("d.gif")));
menubar.add(menu);
setJMenuBar(menubar);
}
}
3.常用组件与布局
3.1常用组件都是JComponent的子类
JTextField 文本框
构造函数:JTextField( ) ; JTextField(int columns) ;
常用方法:public String getText();
public void setText(String t);
JTextArea 文本区
构造函数:JTextArea() ;JTextArea(int rows, int columns)
常用方法:public String getText();
public void setText(String t);
JButton 按钮
构造函数:JButton() ; JButton(String text) ;
常用方法:public void addActionListener(ActionListener l);
JLabel 标签
构造函数:JLabel() ; JLabel(String text) ; JLabel(Icon image) ;
常用方法:public String getText();
public void setText(String t);
JCheckBox 复选框
构造函数: JCheckBox() ;JCheckBox(String text) ;
常用方法: public void addItemListener(ItemListener l)
public void addActionListener(ActionListener l)
JRadioButton 单选按钮
构造函数: JRadioButton() ; JRadioButton(String text) ;
常用方法: public void addItemListener(ItemListener l)
JComboBox 下拉列表
构造函数:JComboBox() ; JComboBox(Object[] items)
常用方法: public void addItemListener(ItemListener l)
public Object getSelectedItem();
public int getSelectedIndex()
JPasswordField 密码框
构造函数:JPasswordField() ; JPasswordField(int columns)
常用方法:public String getText();
public void setText(String t);
public void setEchoChar(char c)使用该方法重新设置回显字符.
public char[] getPassword()方法可以返回实际的密码
3.2常用容器
JPanel 面板 默认布局为FlowLayout布局
JTabbedPane选项卡窗格
滚动窗格JScrollPane
拆分窗格JSplitPane
JLayeredPane分层窗格
3.3常用布局
FlowLayout 居中布局
BorderLayout 划分东西南北中五个区域
CardLayout 扑克牌式布局
GridLayout 网格布局
null 空布局
BoxLayout 盒子布局
4.事件
事件源:产生事件的对象
监视器:监视事件源的对象。事件源通过调用相应的方法将某个对象注册为自己的监视器;eg:文本框的方法:addActionListener(监视器);
处理事件的接口:监视器处理事件源的方法的实现。
4.1 ActionEvent事件
事件源:
文本框,按钮,菜单项,密码框,单选按钮
注册监视器:
addActionListener(ActionListener listen)
ActionListener接口:
方法:public void actionPerformed(ActionEvent e)
4.2 ItemEvent事件
事件源:
选择框,下拉列表
注册监视器:
addItemListener(ItemListener listen)
ItemListener接口:
方法:public void itemStageChanged(ItemEvent e)
4.3 DocumentEvent事件
事件源:
文本区域发生变化
注册监视器:
addDocumentListener(DocumentListener listen)
DocumentListener接口:
方法:public void changedUpdate(DocumentEvent e)
public void removeUpdate(DocumentEvent e)
public void insertUpdate(DocumentEvent e)
4.4 MouseEvent事件
事件源:
鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等
注册监视器:
addMouseListener(MouseListener listen)
MouseEvent类方法:
getX() 获取鼠标指针在事件源坐标系中的x坐标;
getY() 获取鼠标指针在事件源坐标系中的y坐标;
getModifiers() 获取鼠标的左键或右键。鼠标的左键和右键分别使用 InputEvent 类中的常量BUTTON1_MASK 和 BUTTON3_MASK来表示。
getClickCount() 获取鼠标被单击的次数。
getSourse() 获取发生鼠标事件的事件源。
MouseListener接口方法:
①:
mousePressed(MouseEvent)负责处理在组件上按下鼠标键触发的鼠标事件。即,当你在事件源按下鼠标键时,监视器调用接口中的这个方法对事件作出处理。
mouseReleased(MouseEvent)负责处理在组件上释放鼠标键触发的鼠标事件。即,当你在事件源释放鼠标键时,监视器调用接口中的这个方法对事件作出处理。
mouseEntered(MouseEvent)负责处理鼠标进入组件触发的鼠标事件。即,当鼠标指针进入组件时,监视器调用接口中的这个方法对事件作出处理。
mouseExited(MouseEvent)负责处理鼠标离开组件触发的鼠标事件。即,当鼠标指针离开组件时,监视器调用接口中的这个方法对事件作出处理。
mouseClicked(MouseEvent)负责处理在组件上单击鼠标键触发的鼠标事件。即,当单击鼠标键时,监视器调用接口中的这个方法对事件作出处理。
②:
MouseMotionListener接口处理鼠标事件:
处理:在事件源上拖动鼠标;在事件源上移动鼠标。
鼠标事件的类型:MouseEvent
监视器: addMouseMotionListener(MouseMotionListener listener)
接口的方法:
mouseDragged(MouseEvent) 负责处理拖动鼠标触发的鼠标事件
mouseMoved(MouseEvent) 负责处理移动鼠标触发的鼠标事件
4.5 焦点事件
事件源:
组件从无输入焦点编程有输入焦点或从有输入焦点变成无输入焦点
注册监视器:
addFocusListener(FocusListener listener)
FoucsListener接口:
方法:public void focusGained(FocusEvent e)
public void focusLost(FocusEvent e)
4.6 键盘事件
事件源:
按下、释放或敲击键盘上一个键时
注册监视器:
addKeyListener(KeyListener listener)
KeyListener接口:
方法:public void keyPressed(KeyEvent e)
public void keyTyped(KeyEvent e)
public void keyReleased(KeyEvent e)
5、MVC结构
模型—视图—控制器结构。
模型:用于存储数据的对象
视图:为模型提供数据显示的对象
控制器:处理用户的交互操作
6、对话框
6.1 消息对话框
public static void showMessageDialog (
Component parentComponent, //指定对话框可见时的位置
String messsage, //指定对话框上显示的消息,
String title, //标题
int messageType) //对话框的外观
6.2输入对话框
public static String showInputDialog (
Component parentComponent,
Object messsage,
String title,
int messageType)
6.3 确认对话框
public static int showConfirmDialog (
Component parent Component,
Obj messsage,
String title,
int optionType)
7、树组件与表格组件
7.1树组件
DefaultMutableTreeNode(Object userObject)//默认可以有子节点
DefaultMutableTreeNode(Object userObject,boolean allowChildren)
7.2表格组件
JTable()//创造默认的表格模型
JTable(int a,int b)//创建a行,b列的默认模型表格
JTable(Object data[][],Object columnName[])//创建默认表格模型对象,并显示由data 指定的二维数组的值,其列名由数组columnName指定
教材学习中的问题与解决过程
无
代码调试中的问题与解决过程
无
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第八周 | 80/1097 | 1/7 | 8/64 | 用户界面与组件 |
第七周 | 100/1017 | 1/6 | 8/56 | 接口的使用 |
第六周 | 325/917 | 1/5 | 10/48 | 抽象与继承 |
第五周 | 443/592 | 1/4 | 16/38 | 类的用法 |
第四周 | 96/149 | 1/3 | 8/22 | 基本语句的复习 |
第二周 | 35/53 | 1/2 | 6/14 | 数据类型应用 |
第一周 | 18/18 | 1/1 | 8/8 | eclipse的使用 |