GUI编程学习总结:
1.GUI即图形用户接口,是创建可视化程序的编程,GUI编程的核心是组件,组件的核心是事件监听器。
2.一个组件就是一个javabean,只不过这个JavaBean很复杂,因为是javabean,所以组件里的想暴露给IDE的
方法都是符合JavaBean命名规范的,即以get或set开头,其他的不想暴露给IDE的方法不必遵循javabean命名
规范,这些方法通过IDE也是不可操作的。
3.在Java中与GUI编程相关的类都在java.swing和java.awt两个包中,swing是awt的升级版,因为在awt中,很多
组件该有的特性都支持的不怎么好,组件数量也比较少,而且无法跨平台,swing封装了大量的组件,支持更加
灵活的布局。
以下为awt和swing组件对比:
1.awt中的组件:
Object CheckboxGroup *Component Button Canvas CheckBox Choice Container Panel Applet ScrollPane Window Dialog Frame Label List TextComponent TextArea TextField MenuComponent MenuItem CheckboxMenuItem Menu PopupMenu
2.swing中的组件:
Object *Component Container *JComponent *AbstractButton JButton JMenuItem JCheckBonMenuItem JMenu JRadioButonMenuItem *JToggleButton JCheckBox JRadioButton Box Filler JColorChooser JComboBox JDesktopIcon JFileChooser JInternalFrame JLabel JLayeredPane JDesktopPane JList JMenuBar JOptionPane JPanel JPopupMenu JProgressBar JRootPane JScrollBar JScrollPane JSeparator JSlider JSplitPane JTabbedPane JTable JTableHeader *JTextComponent JEditorPane FrameEditorPane JTextPane JTextArea JtextField JPasswordField JToolBar JToolTip JTree JViewport ScrollableTabViewport Panel Applet JApplet Window Dialog JDialog Frame JFrame JWindow
可以看到,swing组件比awt要多的多。
awt和swing布局管理器对比:
1.awt中的布局管理器,其中带星号为接口:
2.swing中的布局管理器:*LayoutManager FlowLayout GridLayout *LayoutManager2 BorderLayout CardLayout GridBagLayout
*LayoutManager CenterLayout *LayoutManager2 BoxLayout OverlayLayout SpringLayout
可以看到,swing重新定义了布局管理器,但只是有些名字变了,其布局思想是不变的。
4.awt类库是线程安全的,而swing则不是,因为awt是线程安全的,因此他要做更多的工作,因此运行效率较swing
要低。
5.awt和swing中的事件驱动模型:
1.awt和swing中的组件都能接收到事件,并且能对事件作出响应,究竟作出何种响应,要看我们给其注册的监听函数。
2.awt中支持的事件列表,其中每一种事件都对应一个事件监听器,抽象事件除外:
Object EventObject AWTEvent ActionEvent AdjustmentEvent ComponentEvent ContainerEvent FocusEvent InputEvent KeyEvent MouseEvent MouseWheelEvent PaintEvent WindowEvent HierarchyEvent InputMethodEvent InvocationEvent ItemEvent TextEvent
3.swing中支持的事件列表:
Object EventObject AWTEvent AncestorEvent ComponentEvent InputEvent KeyEvent MenuKeyEvent MouseEvent MenuDragMouseEvent InternalFrameEvent
以下是关于GUI编程的一些简单示例:
1.创建一个简单窗体:
//通过awt类库创建一个简单窗体 public class AWindow extends Frame{ public AWindow(){ setSize(100,100);//设置窗体大小 setVisiable(true);//设置窗体可见 } public static void main(String[]args){ new AWindow();//创建窗体 } } //通过swing类库创建一个简单窗体 public class SWindow extends JFrame{ public SWindow(){ setSize(100,100);//设置窗体大小 setVisiable(true);//设置窗体可见 } public static void main(String[]args){ new SWindow();//创建窗体 } }
2.给窗体添加一些组件,并组册一些事件监听函数:
/** * 组件创建以后并没有和窗体关联一起,需要我们手动的把组件 * 添加到窗体中,其实,窗体就是一个容器,同样,组件创建之后 * 并没有默认的事件监听函数,需要我们为其注册监听函数,不同 * 的事件对应于不同的监听函数,跟组件的类型无关,不过,有的组件 * 是不支持有些事件的,一般的,像鼠标键盘事件基本上所有的组件都是 * 支持的,而他们的事件处理函数也基本上差不多 */ public class EventDemo extends JFrame{ public EventDemo(){ JButton button=new JButton("事件演示"); button.addActionListener(new ActionListener(){//注册监听器 public void actionPerformed(ActionEvent e) { //事件处理函数 JButton b=(JButton)e.getResource();//获得事件源对象 b.setText("你点击了我");//事件处理 } }); add(button);//将按钮添加进窗体中 setSize(100,100);//设置窗体大小 setVisiable(true);//设置窗体可见 } }
3.布局管理器的使用:/** * 布局管理器大同小异,明白了一个,其他的也就明白了,首先 * JFrame是有默认的布局管理器的,当未设置布局管理器时,默认 * 的是流水布局管理器,同时流水布局也是用的最多的布局,也是最简单 * 的布局,对于复杂的界面布局,可以综合使用不同的布局,还可以 * 使用容器,JFrame本身就是容器,而且,布局管理器也只能作用于容器, * 常用的容器是JPanel,容器是不可见的,一个容器只能应用一种布局管理器 * 一个容器内可以有多个容器。 */ public class LayoutDemo extends JFrame{ public LayoutDemo(){ setSize(100,100);//设置窗体大小 setLayout(new FlowLayout());//设置布局管理器 JButton button=null; for(int i=0;i<5;i++){//创建五个按钮用来演示流水布局 button=new JButton(i+""); button.addActionListener(new ActionListener(){//事件监听器 public void ActionListener(Event e){//事件处理函数 Jbutton b=(JButton)e.getResource();//获得事件源 b.setText("您点击了我");//对事件作出响应 } }); add(button);//将按钮添加进窗体 } setVisiable(true);//setVisiable()必须是最后一步,否则他后面添加的组件不会生效 } }
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com