- AWT常用控件
- 1. Frame窗口
- 它是一个容器,初始状态是不可见且是最小化状态
- 其常用的构造方法如下:
- Frame() :构造一个默认的不可见的窗口实例
- Frame(String title) :具有指定标题的实例
- 例如:
- Frame frame=new Frame("实例");
- frame.setSize(412,123);
- frame.setVisible(true);
- 也可以定义一个类继承Frame类
- import java.awt.*;
- import java.awt.event.*;
- class jjtt extends Frame{
- public jjtt(){
- initCompontent();
- }
- private void initCompontent(){
- setTitle("实例");
- setSize(400,600);
- addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e){
- System.exit(0);
- }
- });
- }
- public static void main(String args[]){
- new frame().setVisible(true);
- }
- }
- 2. Label标签
- Label label1=new Label("xxx"); //左对齐
- Label label1=new Label("xxx",Label.RIGHT); //右对齐
- 3. Button 按钮
- Button quert=new Button();
- query.setLabel("query");
- Button exit=new Button("exit");
- 4. Checkbox复选框 CheckboxGroup
- 构造方法如下:
- Checkbox() 无文本的复选框
- Checkbox(String label) 指定文本的复选框
- Checkbox(String label,boolean state) 并设置指定状态state
- Checkbox(String label,boolean state,CheckboxGroup group) 该复选框包含在复选框组group中
- Checkbox(String label,CheckboxGroup group,boolean state)
- Checkbox foot=new Checkbox("foot"); Checkbox hand=new Checkbox("hand",true); //默认选中
- 将多个复选框纳入一个组中就可以构成单选框
- CheckboxGroup cbg=new CheckboxGroup();
- Checkbox married=new Checkbox("yes",false,cbg);
- Checkbox unmarried=new Checkbox("no",false,cbg);
- 5. Panel 面板
- 它是一种没有标题的容器,且不能独立存在,必须通过add方法添加到另一容器中,例如Frame,其构造方法如下:
- Panel() :使用默认的布局管理器
- Panel(LayoutManager layout) 创建具有指定布局管理器的新面板
- add(Component comp) 添加指定的控件
- setColor c) 设置窗口的背景颜色 < /span>
- setBounds(int x,int y,int width,int height) 设置指标位置和大小
- 6. TextField文本框 TextArea
- TextField 主要用来接收单行信息,其构造方法如下:
- TextField()
- TextField(int columns) :具有指定列数的对象
- TextField(String text) :具有初始文本
- TextField(String text,int columns)
- 例如:
- TextField textno=new TextField(10);
- TextArea 用来表示多行文本 Label用来表示一行文本
- 其构造方法如下:
- TextArea()
- TextArea(int row,int col)
- TextArea(String text)
- TextArea(String text,int row,int col)
- TextArea(String text,int row,int col,int scrollbar) 具有滚动条的文本
- 其中
- static int SCROLLBARS_BOTH 显示垂直和水平滚动条
- static int SCROLLBARS_HORIZONTAL_ONLY 水平
- static int SCROLLBARS_VERTICAL_ONLY 垂直
- static int SCROLLBARS_NONE 不显示
- 7. 选项框Choice 和列表List
- Choice 类用来实现下拉选项框,且一次只能显示一个选项
- Choice choice=new Choice();
- void add(String item) 添加item项到选项框
- String getItem(int index) 返回指定索引上的选项
- int getItemCount() 返回选项的数量
- int getSelectIndex() 获取选定项的索引
- String getSelectItem() 获取选定项的字符串
- void insert(String item,int index) 将菜单插入到指定位置
- void remove(int position) 删除选项
- void remove(String item) 删除选项中第一个item
- void removeAll() 删除全部选项
- void select(int pos) 将指定的选项设为指定的项
- void select(String item) 将指定的选项设为指定的项
- Choice city=new Choice();
- city.add("wuhan");
- city.add("hangzhou");
- city.select(0);
- List()
- 为用户提供了一个可滚动的文本项列表,且允许进行单选或多项选择
- List()
- List(int row)
- list(int row,boolean multipleMode) row行允许多选
- List list=new List(5,true);
- list.add("hangzhou");
- list.add("beijing");
- list.select(1);
- 8. Scrollbar 滚动条 和ScrollPanel滚动面板
- Scrollbar提供了一种在一定范围内的值中进行选择的便捷方式
- Scrollbar()
- Scrollbar(int orientation) orientation是指定的滚动方向条 可以是 Scrollbar.HORIZONTAL 和Scrollbar.VERTIVAL
- Scrollbar(int orientation,int value,int visible,int min,int max) 指定方向 初始值 可见量(滑动块本身的宽度) 最小值 最大值
- final Scrollbar scroe=new Scrollbar(Scrollbar.HORIZONTAL,0,10,0,20);
- ScrollPanel是一种容器类
- ScrollPanel()
- ScrollPanel(int displaypolicy) 其中displaypolicy为
- static int SCROLLBARS_ALWAYS 总是显示水平 垂直的滚动条
- static int SCROLLBARS_AS_NEEDED 只在需要的时候显示水平 垂直的滚动条
- static int SCROLLBARS_NEVER 不显示
- ScrollPanel memo=new ScrollPanel(SCROLLBARS_AS_NEEDED);
- memo.setSize(200,60);
- memo.add(new TextArea())
- 9. 画布Canvas
- 此控件表示屏幕上的一个矩形区域,要绘制图形我们需要创建一个继承自Canvas的类,然后覆盖paint()方法,其格式如下: void paint(Graphics g)
- 10. 菜单MenuBar Menu 和MenuItem
- 首先创建菜单栏MenuBar 然后 创建Menu 和MenuItem 将MenuItem加入Menu 将Menu加入MenuBar 将MenuBar加到窗口
- 创建菜单栏对象
- MenuBar mb=new MenuBar();
- 创建菜单对象
- Menu file=new Menu("文件");
- 创建菜单项
- MenuItem newItem=new MenuItem("新建");
- CheckboxMenuItem openItem=new CheckboxMenuItem("打开"); 带对钩的菜单项
- 将MenuItem加入Menu
- file.add(newItem);
- file.add(openItem);
- 将Menu加入MenuBar
- mb.add(file);
- 布局管理器
- 1. FlowLayout 布局
- 其布局的策略是将控件按添加顺序从左到右在容器中排放,默认的对齐方式是居中对齐,其构造方法如下:
- FlowLayout()
- FlowLayout(int align) 构造一个具有一个指定对齐方式的布局,默认的是水平和垂直距离是5个单位
- FlowLayout(int align,int hgap,int vgap) 有指定的对齐方式,水平间距 垂直间距
- FlowLayout.CENTER
- FlowLayout.LEFT
- FlowLayout.RIGHT
- FlowLayout.LEADING
- FlowLayout.TRALILING
- 2. CardLayout布局
- 此布局的原则是将控件放在一张卡片中,且每次只显示一张卡片,可以通过其提供的方法切换卡片
- CardLayout() 构造一个间距为0的布局器
- CardLayout(int hgap,int vgap) 构造一个具有指定水平间距 和垂直间距的布局器
- 例如:
- CardLayout cl=new CardLayout();
- 其提供的方法如下:
- void first(Component parent) 翻转到第一张卡片
- void last(Component parent) 翻转到最后一张卡片
- void next(Component parent) 翻转到下一张卡片
- void previous(Component parent) 翻转到前一张卡片
- int getHgap() 获取控件之间的水平间距
- int getVgap() 获取控件之间的垂直间距
- int setVgap() 设置控件之间的垂直间距
- int setHgap() 设置控件之间的水平间距
- void show(Container parent,String name) 翻转到name的控件
- 例如:
- 设置窗口的布局:
- CardLayout cl=new CardLayout();
- setLayout(cl);
- 然后加入两个标签:
- add(new Label("1"),"lb11");
- add(new Label("2"),"lb22"); //lb11是给标签的一个代号我们可以利用代号显示标签
- cl.show(this,"lb11");
- cl.show(this,"lb22");
- 步骤是先声明布局对象,然后把控件加入窗口中(不需要显式的添加到布局管理器中),最后调用show函数显示控件
- 3. BorderLayout布局
- 此布局将容器按照“上北下南,左西右东” 的原则排列,中间的区域占得空间最大。每个区域只能包括一个控件,其提供静态常量:
- BorderLayout.CENTER BorderLayou.NORTH BorderLayou.SOUTH BorderLayou.WEST BorderLayou.EAST
- 其构造方法如下:
- BorderLayout() :控件之间没有间距的布局
- BorderLayout(int hgap,int vgap) : 水平间距 垂直间距
- 4. GridLayout
- 5. null
- 6. BoxLayout box
- 事件处理
- 在java.util包中定义的EventObject是事件类层次的根节点,它是所有事件类的父类
- 在java.awt包中定义的AWTEvent是其子类 是所有awt事件的父类
- 事件监听器
- 可以直接给事件添加监听器
- addButton.addActionListener(new ActionListener(){
- public void actionPerformed(actionEvent e){}
- });
- 也可以令当前类实现监听器接口,然后覆盖监听器方法:
- public class JTable extends JFrame implements ActionListener{
- public void actionPerformed(actionEvent e){}
- } 在这种情况下给控件添加监听器就比较简单了, addButton.addActionListener(this)
- 当同一个监听器同时监听多个控件时,在监听器的方法中需要对事件源进行判断例如:
- if(e.getActionCommand().equals(ADD_COMMAND)){} //通过动作命令 判断事件源
- if(e.getSource()==addButton){} // 直接判断事件源
- 如果通过 动作命令 来判断事件源,则需要给控件设置动作命令标示
- private static String ADD_COMMAND="add"
- addButton.setActionCommand(ADD_COMMAND);
- 常见的事件处理
- 1. 动作事件
- ActionListener 接口定义了动作事件监听器,可以实现该接口并覆盖actionPerformed() 方法 或者直接添加事件处理器
- 2. 文本事件
- TextListener表示文本监听器
- public class Text extends JFrame implements TextListener{
- public void textValueChanged(TextEvent e){}
- }
- 3. 选项事件
- ItemListener 可以用于复选框,列表,下拉组合框,单选控件
- comboBox.addItemListener(new ItemListener(){
- public void itemStateChanged(ItemEvent e){}
- })
- 4. 键盘事件
- KeyListener接口定义了三个方法:
- void KeyPressed(KeyEvent e){}
- void KeyReleased(KeyEvent e){}
- void KeyTyped(KeyEvent e){} 键入某个键时调用
- 5. 鼠标事件
- MouseListener接口
- 方法有:
- void mouseClicked(MouseEvent e)
- mouseEnter(MouseEvent e) //鼠标到达控件之上
- mouseExit(MouseEvent e) //鼠标离开控件
- mousePressed(MouseEvent e) //在控件上按下鼠标键
- mouseReleased(MouseEvent e) //在控件上按下鼠标键时
- MouseMotionListener 接口
- 方法有:
- void mouseDragged(MouseEvent e) //在控件上按下并拖动鼠标时
- mouseMoved(MouseEvent e) //鼠标光标移动到控件上时
- MouseWheelListener接口
- 方法有:
- void mouseWheelMoved(MouseWheelEvent e) //鼠标滚轮滑动
- 6. 焦点事件
- FocusListener接口用于监听控件键盘焦点事件,其方法有:
- void focusGained(FocusEvent e) //获得键盘焦点
- void focusLost(FocusEvent e) //失去键盘焦点
- 7. 窗口事件
- windowFocusListener 接口
- 其方法有:
- void windowGainedFocus(WindowEvent e) // 窗口获得焦点
- windowLostFocus(WindowEvent e) //失去焦点
- WindowListener 接口
- 其方法有:
- void windowActived(WindowEvent e) //激活窗口时候
- windowClosed(WindowEvent e) //关闭窗口时
- windowClosing(WindowEvent e) //用户从窗口的菜单中关闭窗口时
- windowDeactivated(WindowEvent e) //不再是活动窗口时候
- windowDeiconified(WindowEvent e) //窗口从最小化到正常状态时
- windowIconified(WindowEvent e) //从正常变为最小化时候
- windowOpened(WindowEvent e) //首次可视时候
- WindowStateListener接口
- 方法有:
- void windowStateChanged(WindowEvent e) //窗口的状态改变时
- 8. 表格模型事件
- 其是由TableModelListener接口定义的,其只有一个方法 tableChanged()
- tableMode1.addTableModelListener(new TableModelListener(){
- public void tableChanged(TableModelEnent e){
- e.getColumn(); //事件发生的列
- e.getFirstRow();//触发事件表格的最小行
- e.getLastRow(); //触发事件表格的最大行
- e.getSource(); //事件源
- e.getType(); //事件类型 添加,删除,修改
- }
- })
- 事件适配器
- 要实现监听接口就必须是想其声明的所有方法,我们可以使用一组带Adapter标记的适配器类,来不用实现所有方法
- 常用的适配器类有:
- windowAdapter 对应的接口 windowListener
- FocusAdapter 对应的接口 FocusListener
- KeyAdapter 对应的接口 KeyListener
- MouseAdapter 对应的接口 KeyListener
- MouseMotionAdapter 对应的接口 MouseMotionListener
- Swing 窗口
- 1. JFrame窗口
- 其构造方法如下:
- JFrame()
- JFrame(String title)
- 其常用方法如下:
- void setDefaultCloseOperation(int operation) 设置关闭按钮的操作
- setIconImage(Image image) 设置窗口图标
- setContentPane(Container contentPane) 设置内容面板
- setJMenuBar(JMenuBar menubar) 设置菜单栏
- repaint(long time , int x,int y,int width,int height) 在time毫秒内重绘指定的区域
- setLayout(Layout) 设置布局管理器
- remove(Component comp) 移除指定控件
- static void setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated) 新建的窗口是否具有外观装饰
- 例如: import javax.swing.*;
- import java.awt.*;
- public class jjtt extends JFrame{
- public jjtt(String title){
- super(title);
- setSize(315,190);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Panel panel=new Panel();
- panel.add(new Button("a"));
- setContentPane(panel);
- }
- public static void main(String args[]){
- JFrame.setDefaultLookAndFeelDecorated(true);
- new jjtt("jjtt").setVisible(true);
- }
- }
- setDefaultCloseOperation(int xx) 其参数可以取值:
- WindowConstants.DO_NOTHING_ON_CLOSE
- windowConstants.HIDE_ON_CLOSE
- windowConstants.DISPOSE_ON_CLOSE
- windowConstants.EXIT_ON_CLOSE
- 2. JOptionPane 标准对话框
- 此用于创建向用户发出信息的对话框,最常见的对话框有四种:
- showConfirmDialog showInputDialog showMessageDialog showOptionDialog
- 1. showConfirmDialog
- static int showConfirmDialog(Component parentCom,Object message,String title,int optionType,int messageType,Icon icon)
- message要显示的内容 title标题 optionTYpe 对话框按钮的类型 messageType 为图标的类型 icon为自定义图标
- optionType可以为:
- YES_NO_OPTION :是否按钮
- YES_NO_CANCEL_OPTION :是否取消按钮
- OK_CANCEL_OPTION :确定,取消按钮
- MessageType可以为:
- ERROR_MESSAGE :出错图标
- INFORMATION_MESSAGE:信息图标
- WARING_MESSAGE :警告图标
- QUESTION_MESSAGE: 询问图标
- PLAIN_MESSAGE :无图标
- 该各个返回值可以是:
- YES_OPTION NO_OPTION CANCEL_OPTION OK_OPTION CLOSED_OPTION
- 例如:
- import javax.swing.*;
- public class jjtt extends JFrame{
- public jjtt(){
- setSize(345,260);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public static void main(String args[]){
- jjtt j=new jjtt();
- j.setVisible(true);
- int select=JOptionPane.showConfirmDialog(j,"go on ?","option",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
- System.out.println(select==JOptionPane.YES_OPTION?"GO ON":"STOP");
- int s=JOptionPane.showConfirmDialog(j,"go on ?","option",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,new ImageIcon("1.jpg"));
- }
- }
- 2. showMessageDialog
- static void showMessageDialog(Component parentcom,Object message,String titlt,int messageType,Icon icon)
- 示例: JOptionPane.showMessgaeDialog(this,"done","option",JOptionPane.INFORMATION_MESSAGE);
- 3. showInputDialog
- static String showInputDialog(Component parentcomp,Object message,String title,int messageType)
- 示例: String postcode=JOptionPane.showInputDialog(this,"input code","option",JOptionPane.WARING_MESSAGE);
- 4. showOptionDialog
- 该类型对话框可以自定义操作按钮:
- static int showOptionDialog(Component parentcom,Object Message,String title,int optionType,int messageType,Icon icon,Object[] option,Object initialValue);
- 这里的options表示用户可能的选择项数组,initialValue表示默认值只有在使用options时候才有意义,否则为null
- 3. JColorChooser 颜色选择器
- 其提供了一个重要的静态方法 showDialog() , 用于弹出颜色选择对话框
- static Color showDialog(Component parentcom,String title,Color initialColor);
- Color color=JColorChooser.showDialog(this,"choose color",Color.RED);
- 示例: Label lable=new Label("aaa");
- j.add(lable);
- Color color=JColorChooser.showDialog(j,"choose",j.getBackground());
- lable.setForeground(color);
- 4. 文件选择器JFileChooser
- 其常用的构造方法如下:
- JFileChooser() 构造一个指向用户目录的JFileChooser
- JFileChooser(File currentDirectory) 根据指定的路径构造JFileChooser
- JFileChooser(String currentDirectoryPath) 根据指定的路径构造JFileChooser
- 例如:
- JFileChooser jfc1=new JFileChooser();
- jfc1.showOpenDialog(this); 在window平台下默认打开 我的文档 文件夹
- JFileChooser jfc2=new JFileChooser(new File("."));
- jfc2.showOpenDialog(this); 默认打开读取工作目录
- 有时可能只希望选择文件,或者只选择文件夹,JFileChooser通过三个静态属性:
- static int DIRECTORIES_ONLY 仅显示目录
- static int FILES_AND_DIRECTORIES 显示目录和文件
- static int FILES_ONLY 仅显示文件
- JFileChooser 同时提供了setFileSelectMode() 方法来设置模式
- 如果只希望选择word ...文件,也就是文件过滤,我们需要利用javax.swing.filechooser包中的文件扩展名过滤器 FileNameExtensionFilter
- FileNameExtensionFilter(String description,String ...extensions) description是对文件扩展名的描述,extensions表示具体的扩展名
- 示例: FileNameExtensionFilter filter=new FileNameExtensionFilter("office","doc","xml","ppt");
- 现在我们需要打开该对话框,JFileChooser提供了静态方法 showDialog() showOpenDialog()
- int showDialog(Component parentcom,String approveButtonText) 弹出具有自定义打开按钮的自定义文件选择对话框
- int showOpenDialog(Component parentcom) 在父容器中打开文件选择器对话框
- 示例: jfc1.showDialog(this,"choose file") jfc2.showOpenDialog(this)
- 区别在于前者使用"choose file" 作为打开按钮和对话框标题文字,而后者使用默认的打开字样
- 最后,我们怎么判断用户是选择了打开还是 取消, 可以通过showDialog() showOpenDialog() 的返回值来判定
- 可能的返回值如下:
- JFileChooser.CANCEL_OPRION
- JFileChooser.APPROVE_OPTION
- JFileChooser.ERROR_OPTION
- 示例:
- JFileChooser chooser=new JFileChooser();
- chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
- FileNameExtensionFilter filter=new FileNameExtensionFilter("office","doc","xls","ppt");
- chooser.setFileFilter(filter);
- int se=chooser.showOpenDialog(j);
- if(se==JFileChooser.APPROVE_OPTION){
- try{
- Runtime.getRuntime().exec(new String[] {
- "cmd.exe","/C",chooser.getSelectedFile().toString()
- });
- }catch(IOException e){
- e.printStackTrace();
- }
- }
- Swing 容器
- 1. JPanel面板
- 通过JPanel对控件进行包装,是一种通用的小型容器,其构造方法:
- JPanel() 创建具有双缓冲和FlowLayoutb布局的JPanel
- JPanel(boolean isDoubleBuffered) 是否使用双缓冲
- JPanel(Layout) 具有指定Layout
- JPanel(Layout,boolean isDoubleBuffered)
- 2. JTabbedPanel 标签化面板
- 此面板为用户提供了一组控件之间进行切换的能力,其构造方法如下:
- JTabbedPanel() 创建一个具有默认 JTabbedPanel.TOP 选项卡布局的标签化面板
- JTabbedPanel(int tabPlacement) 使用指定的布局tabPlacement创建 tabPlacement可以是JTabbedPanel.TOP JTabbedPanel.BOTTOM JTabbedPanel.LEFT JTabbedPanel.ROGHT
- JTabbedPanel(int tabPlacement,int tabLayputPolicy) 使用指定的布局 指定的布局策略 布局策略可以是JTabbedPane.WRAP_TAB_LAYOUT 自动折行
- JTabbedPane.SCROLL_TAB_LAYOUT 滚动选项卡
- JTabbedPane提供了addTab()方法用于添加选项卡标签,该方法格式如下:
- void addTab(String title,Component com) 添加一个标题为title且没有图标的选项卡 com为单击此选项卡时要显示的控件
- void addTab(String title,Icon icon,Component com) 有图标
- void addTab(String title,Icon icon,Component com,String tip) tip为鼠标指向选项卡时要显示的提示文字
- 此过程为:
- 创建JTabbedPane对象,创建包含各种组件的容器Container,添加选项卡标签 container作为addTab()的参数,将tabbedPane加到窗口
- 3. JSplitPane 拆分面板
- 用于将两个控件进行图形化分割,而且这两个控件可以有用户交互式调整大小,其构造函数如下:
- JSplitPane() 将控件水平排列
- JSplitPane(int newOrientation) 创建一个指定方向且无连续布局的JSplitPane,方向可以是 JSplitPane.HORIZONTAL_SPLIT 水平 JSplitPane.VERTICAL_SPLIT垂直
- JSplitPane(int newOrientation,boolean newContinuousLayout) 具有指定重绘方式,为true时表示当分割条改变位置时 连续重绘控件,否则只有当移动停止时才重绘控件
- JSplitPane(int newOrientation,boolean newContinuousLayout,Component newLeftComponent,Component newRightComponent) 第一个控件出现在左边或上边,第二个出现在下面或右边
- JSplitPane(int newOrientation,Component newLeftComponent,Component newRightComponent) 不连续重绘
- 示例:
- JSplitPane splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,new Button("a"),new Button("b"));
- 4. JScrollPane 滚动面板
- 此面板是根据滚动条策略显示水平或垂直滚动条,其构造方法如下:
- JScrollPane() 创建一个根据面板内容自动显示水平和垂直滚动条的面板
- JScrollPane( Component view ) 创建一个显示指定控件view 自动显示滚动条
- JScrollPane(Component view ,int vsbPolicy,int hsbpolicy) 具有指定滚动策略 vsbpolicy 可以是ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED , 当需要时垂直
- ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER 从不显示垂直滚动条 ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
- ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_AS_NEEDED ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_NEVER ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_ALWAYS
- 示例:
- JScrollPane srcollPane=new JScrollPane(new Button("aa"),ScrollPaneConstants.HPRIZONTAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
- 工具栏JToolBar
- 其提供了快捷方式,其创建方法如下:
- JToolBar() 默认水平的工具栏
- JToolBar(int orientation) 具有指定方向 JToolBar.HORIZONTAL JToolBar.VERTICAL
- JToolBar(String name) 具有指定名称的工具栏
- JToolBar(String name,int orientation)
- 示例:
- JToolBar toolBar=new JToolBar("toolbar");
- toolbar.setFloatable(false); //不允许拖动工具栏
- Button o=new Button("open");
- Button c=new Button("close");
- Button s=new Button("save");
- Button e=new Button("exit");
- toolBar.add(o);
- toolBar.add(c);
- toolBar.add(s);
- toolBar.add(new JToolBar.Separator()); //按钮之间添加分隔符
- toolBar.add(e);
- toolBar.setLayout(new FlowLayout(FlowLayput.CENTER,1,1));
- add(toolBar);
- 5. 桌面面板和内部框架
- JDesktopPane用于创建多文档界面的容器,可以在其内部包含多个子窗口。其只有一个构造方法: JDesktopPane()
- 对于子窗口,JDesktopPane提供了setDragMode(int dragMode) 方法设置拖拉方式,参数可以是 JDesktopPane.LIVE_DRAG_MODE 拖动子窗口时候显示器内容
- JDesktopPane.OUTLINE_DRAG_MODE 不显示
- 我们可以先创建JDesktopPane然后向其内部加入子窗口 JInternalFrame,其构造方法如下:
- JInternalFrame() 子窗口不可调整大小不可最大最小化,不可关闭
- JInternalFrame(String title) 具有标题
- JInternalFrame(String title,boolean resizable) 是否可调大小
- JInternalFrame(String title,boolean resizable,boolean closable) 是否可关闭
- JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable) 是否可最大化
- JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable,boolean iconifiable) 是否可图标化
- 示例:
- import javax.swing.*;
- import java.awt.*;
- public class jjtt extends JFrame {
- public jjtt(String title){
- super(title);
- setSize(900,1236);
- setResizable(false);
- JDesktopPane desktop=new CreateDeaktopPane();
- createFrame(desktop,3); //创建三个子窗口
- setContentPane(desktop);
- }
- protected void createFrame(JDesktopPane desktop,int num){
- JInternalFrame frame=null;
- for(int i=0;i<num;i++){
- frame=new JInternalFrame("窗口"+i,true,true,true,true);
- frame.setSize(179,100);
- frame.setLocation(i*20,i*20);
- frame.setVisible(true);
- desktop.add(frame);
- }
- }
- public static void main(String args[]){
- //JFrame.setDefaultLookAndDecorated(false);
- new jjtt("multi").setVisible(true);
- }
- class CreateDeaktopPane extends JDesktopPane{
- public CreateDeaktopPane(){
- setDragMode(JDesktopPane.LIVE_DRAG_MODE);
- }
- protected void paintComponent(Graphics g){
- g.drawImage(Toolkit.getDefaultToolkit().getImage("1.jpg"),0,0,this);
- }
- }
- }