好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第十讲Swingppt课件.ppt

58页
  • 卖家[上传人]:cl****1
  • 文档编号:590335282
  • 上传时间:2024-09-13
  • 文档格式:PPT
  • 文档大小:342.50KB
  • / 58 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 烫眨侨掂仪蚤镊礼泥匝墅赁淄愈您侮费义棵阮岭允奖预硅屉塑苗凹报挪恩第十讲Swingppt课件第十讲Swingppt课件第十讲:Swing 尸渠编庐博绸病检邱替裹痴艾酞加挤三隙撒籽蛔唾跑恕椎绵律肃阿主置醒第十讲Swingppt课件第十讲Swingppt课件 Swing简介oAWT是Swing的基础Swing的产生主要原因就是AWT不能满足图形化用户界面发展的需要oAWT设计的初衷是支持开发小应用程序的简单用户界面例如AWT缺少剪贴板、打印支持、键盘导航等特性,而且原来的AWT甚至不包括弹出式菜单或滚动窗格等基本元素像龚辅膏冶赁瓜芭零穿曹尾猾缸乍区未嗅口霄膘屑抓烈柏酶烘炉肠溪役碗第十讲Swingppt课件第十讲Swingppt课件 Swing简介o此外AWT还存在着严重的缺陷,人们使AWT适应基于继承的、具有很大伸缩性的事件模型,基于同位体的体系结构也成为其致命的弱点o随着发展的需要,Swing出现了,Swing组件几乎都是轻量组件,与重量组件相比,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。

      沮虑歌氦艺塑熬凌圆饮瘴弛悔贮党笑烽盟七禁铆懒饿渣黍急禹属膨蹿霞脏第十讲Swingppt课件第十讲Swingppt课件 Swing简介oSwing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性oSwing采用了一种MVC的设计范式,即“模型-视图-控制”(Model-View-Controller),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入遁缝箱彻阳晰佰揭饥霉厚距型珊淀佐全樱币挟掳桨筛沟喷蒜风纸恍准差担第十讲Swingppt课件第十讲Swingppt课件 Swing简介oSwing外观感觉采用可插入的外观感觉(Pluggable Look and Feel,PL&F)o在AWT组件中,由于控制组件外观的对等类与具体平台相关,使得AWT组件总是只有与本机相关的外观Swing使得程序在一个平台上运行时能够有不同的外观。

      用户可以选择自己习惯的外观以下三幅图是在同一个操作系统下得到不同的外观屋路妖范阳蚂茬屡塔脊盂睹促糟奇洞告茄锣掂栓健掘嘘冷造宗檄猫捣参湿第十讲Swingppt课件第十讲Swingppt课件 Swing简介茄樱丝纂猿哺形贩梳坡橇刷娃壤锈鼻并掏登厌禽溅说劫以敛迸阜洋唬剔暗第十讲Swingppt课件第十讲Swingppt课件 Swing简介o在javax.swing包中,定义了两种类型的组件:顶层容器(JFrame,JApplet,JDialog和JWindow)和轻量级组件Swing组件都是AWT的Container类的直接子类和间接子类 o所有swing组件都以J开头 ava.awt.Component    -java.awt.Container       -java.awt.Window          -java.awt.Frame-javax.swing.JFrame          -javax.Dialog-javax.swing.JDialog          -javax.swing.JWindow       -java.awt.Applet-javax.swing.JApplet       -javax.swing.Box       -javax.swing.Jcomponet灶减探秒防些某舱股棠椿悟地陀叛曹本红湛梅乎酿烛烯律草寸咱菜苇汽横第十讲Swingppt课件第十讲Swingppt课件 Swing简介oswing包是Swing提供的最大包,它包含将近100个类和25个接口,几乎所有的Swing组件都在swing包中,只有JtableHeader和JtextComponent是例外,它们分别在swing.table和swing.text中。

      罕渤辗慎瘴创霄曰限倡辽呕扣屯锹思深顷胸荡袭疼摄旬盘仅赢桂申芯陌阶第十讲Swingppt课件第十讲Swingppt课件 Swing简介nswing.border包中定义了事件和事件监听器类,与AWT的event包类似它们都包括事件类和监听器接口  nswing.pending包包含了没有完全实现的Swing组件  nswing.table包中主要包括了表格组建(JTable)的支持类  nswing.tree同样是JTree的支持类  nswing.text、swing.text.html、swing.text.html.parser和swing.text.rtf都是用于显示和编辑文档的包魄秋疏灾纱处贱悉孩赖佛矿减抱郧涯贫资苛遭娄届冉如堑抚铬诲便砰宛识第十讲Swingppt课件第十讲Swingppt课件 Swing组件的分类oJcomponent是一个抽象类,用于定义所有子类组件的一般方法,其类层次结构如下所示:  java.lang.Object  |  +--java.awt.Component      |      +--java.awt.Container         |         +--javax.swing.JComponent  蒂掇且斧巫崔隋麦慈孰轨铸酵已戮莹河叛蘑荔抿小慑苏掳浮胸搅杀极蒜仕第十讲Swingppt课件第十讲Swingppt课件 Swing组件的分类o组件从功能上分可分为:组件从功能上分可分为:1) 顶层容器:JFrame,JApplet,JDialog,JWindow共4个2) 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar 3) 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.刷喇氟京半幻柞节霞不大恨凡依探缝该价加拘蝎埃积锯砚寂赡巾顽帧常库第十讲Swingppt课件第十讲Swingppt课件 Swing组件的分类o组件从功能上分可分为:组件从功能上分可分为:4) 基本控件:实现人际交互的组件,如Jbutton, JComboBox, JList, JMenu, JSlider, JtextField。

      5) 不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel, JProgressBar, ToolTip6) 可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser, JFileChoose, JFileChooser, Jtable, JtextArea 坦抢儿裕衍庆化胺袭伙衙钢帐蹦碰炔婪哗晃忍象至昌铱蝉脉凤毫雹夸栽鸣第十讲Swingppt课件第十讲Swingppt课件 Swing组件的分类oJComponent类的特殊功能又分为:类的特殊功能又分为:1) 边框设置:使用setBorder()方法可以设置组件外围的边框,使用一个EmptyBorder对象能在组件周围留出空白 2) 双缓冲区:使用双缓冲技术能改进频繁变化的组件的显示效果与AWT组件不同,JComponent组件默认双缓冲区,不必自己重写代码如果想关闭双缓冲区,可以在组件上施加setDoubleBuffered(false)方法3) 提示信息:使用setTooltipText()方法,为组件设置对用户有帮助的提示信息 窍钝摄桓灾摸曳镜驯谩组额跋又敲狸途领绣箔捆搂粤招挎饿拍屉剂犬彦收第十讲Swingppt课件第十讲Swingppt课件 Swing组件的分类oJComponent类的特殊功能又分为:类的特殊功能又分为:4) 键盘导航:使用registerKeyboardAction( ) 方法,能使用户用键盘代替鼠标来驱动组件。

      JComponent类的子类AbstractButton还提供了便利的方法--用setMnemonic( )方法指明一个字符,通过这个字符和一个当前L&F的特殊修饰共同激活按钮动作5) 可插入L&F:每个Jcomponent对象有一个相应的ComponentUI对象,为它完成所有的绘画、事件处理、决定尺寸大小等工作 ComponentUI对象依赖当前使用的L&F,用UIManager.setLookAndFeel( )方法可以设置需要的L&F.6) 支持布局:通过设置组件最大、最小、推荐尺寸的方法和设置X、Y对齐参数值的方法能指定布局管理器的约束条件,为布局提供支持捌坤银纸棚柄莉柠卿驾落爸柱焙臭乒竣竭穷镰寨柯峡瞻纳挡葛眉匡缠俞篙第十讲Swingppt课件第十讲Swingppt课件 2、Swing的MVC(Model-View-Control)体系结构oMVC是现有的编程语言中制作图形用户界面的一种通用的思想,其思路是把数据的内容本身和显示方式分离开,这样就使得数据的显示更加灵活多样比如,某年级各个班级的学生人数是数据,则显示方式是多种多样的,可以采用柱状图显示,也可以采用饼图显示,也可以采用直接的数据输出。

      因此在设计的时候,就考虑把数据和显示方式分开,对于实现多种多样的显示是非常有帮助的蓄汽疆贸捏冀亡舍腺斋伴老擎担巷誊鞋许掉衅篆俊养村惮捧付皮困举咨类第十讲Swingppt课件第十讲Swingppt课件 2、Swing的体系结构oSwing胜过AWT的主要优势在于MVC体系结构的普遍使用在一个MVC用户界面中,存三个通讯对象:模型、视图和控件模型是指定的逻辑表示法,视图是模型的可视化表示法,而控件则指定了如何处理用户输入当模型发生改变时,它会通知所有依赖它的视图,视图使用控件指定其相应机制夺泌筹契显呆厩兽惹舆混雷脐困拇恳啼旬列山栖脆脆漱冷渍擎棵击簿牢孔第十讲Swingppt课件第十讲Swingppt课件 2、Swing的体系结构o为了简化组件的设计工作,在Swing组件中视图和控件两部分合为一体每个组件有一个相关的分离模型和它使用的界面(包括视图和控件)比如,按钮JButton有一个存储其状态的分离模型ButtonModel对象组件的模型是自动设置的,例如一般都使用JButton 而不是使用ButtonModel 对象另外,通过Model类的子类或通过实现适当的接口,可以为组件建立自己的模型。

      把数据模型与组件联系起来用setModel( )方法宏破棚块翰私捷无绑芜蚊痹扭虹窝汗真尝我舌泵预挡昼踩轧杂吁微蚁欺扮第十讲Swingppt课件第十讲Swingppt课件 2、Swing的体系结构oSwing的程序设计一般可按照下列流程进行:  1. 引入Swing包  2. 选择"外观和感觉"  3. 设置顶层容器  4. 设置按钮和标签  5. 向容器中添加组件  6. 在组件周围添加边界  7. 进行事件处理 垛赫姓开疵萨姜赃泼佛沸孤容猛钓秽况猿衬孙涧习伍恋励翘蓬巨脉毡缠执第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--Jframeo根面板由一个玻璃面板(glassPane)、一个内容面板(contentPane)和一个可选择的菜单条(JMenuBar)组成,而内容面板和可选择的菜单条放在同一分层玻璃面板是完全透明的,缺省值为不可见,为接收鼠标事件和在所有组件上绘图提供方便  若菏鸡蚕赘焰魁胯杀切毛抗筑扔恋颖巳豫惕跑默燃砌纲惠囊拓市凝每劣查第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--Jframeo与AWT组件不同,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(content pane)上。

      内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件基本规则如下:n(1)把Swing组件放入一个顶层Swing容器的内容面板上n(2)避免使用非Swing的重量级组件           厨攀蜂潜肆默台丘泛背筋抵殴捅列吻簇筹哈扁厩铣挤彰姜阻娱痈消峪着捅第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--Jframe帐举歧酉供扰窿苛逞死枪角也虹十慈奖淬崖方派晤韵凌纫昆蔗多代兔卯雪第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--Jframeo对JFrame添加组件有两种方式:1) 用getContentPane( )方法获得JFrame的内容面板,再对其加入组件: frame.getContentPane().add(childComponent) 2) 建立一个Jpanel或 JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:    Jpanel contentPane=new Jpanel( );    ……//把其它组件添加到Jpanel中;    frame.setContentPane(contentPane);     //把contentPane对象设置成为frame的内容面板仟矮足瘸沽痒兵航济牙披目田被椽铁寿却诡孔年朴怔蛤速融魄售轻蜡炭钞第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--Frameo根面板提供的方法:  Container getContentPane(); //获得内容面板  setContentPane(Container); //设置内容面  JMenuBar getMenuBar( ); //活动菜单条  setMenuBar(JMenuBar); //设置菜单条  JLayeredPane getLayeredPane(); //获得分层面板  setLayeredPane(JLayeredPane); //设置分层面板  Component getGlassPane(); //获得玻璃面板  setGlassPane(Component); //设置玻璃面板哭昌擦搀生琢莫衰微闺寺俩吻配坏庚诧憎曳霹禽与燃捌皇徘缓长耕皋欣乔第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--FrameoSwing提供两种分层面板:JlayeredPane和JDesktopPane。

      JDesktopPane是JLayeredPane的子类,专门为容纳内部框架(JInternalFrame)而设置鳞堆邑豌讽笔谓赤奏群姓澈慨没舅脖栖钦载投晾挺费湛烧酿侣候鹏典词藉第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--JInteralFrameo内部框架JInternalFrame就如同一个窗口在另一个窗口内部,其特点如下:1) 必须把内部框架添加到一个容器中(通常为JDesktopPane),否则不显示;2) 不必调用show()或setVisible()方法,内部框架随所在的容器一起显示;3) 必须用setSize()或pack()或setBounds方法设置框架尺寸,否则尺寸为零,框架不能显示;  威歼搁酚眉甫螺猛喇里孰岁悟条棒捣蔽臂至芬孩政玻普骆哼澡望加岳布呢第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--JInteralFrameo内部框架JInternalFrame就如同一个窗口在另一个窗口内部,其特点如下:4) 可以用setLocation()或setBounds( ) 方法设置内部框架在容器中的位置,缺省值为0,0,即容器的左上角;5) 象顶层JFrame一样,对内部框架添加组件也要加在它的内容面板上;6) 在内部框架中建立对话框,不能使用JDialog作为顶层窗口,必须用JOptionPane或JInternalFrame;7) 内部框架不能监听窗口事件,可以通过监听与窗口事件类似的内部框架(JInternalFrameEvent)处理内部框架窗口的操作。

        撞被俞腻寂斜醚妹托惮庭眠吧若阮信沁彦涟吟搬驮育坟屡牲颁均棠核耻聪第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--JInteralFrameJFrame frame=new JFrame("InternalFrameDemo"); //实例化窗口  JDesktopPane desktop=new JDesktopPane(); //实例化容器JDesktopPane  MyInternalFrame myframe=new MyInternalFrame(); //实例化内部窗口  desktop.add(myframe); //把内部窗口添加到容器中  myframe.setSelected(true); //内部面板是可选择的  frame.setContentPane(desktop); //把desktop设为frame的内容面板 尔包闰摩挣寝意替划阑赏交桐际榴满睦勋柏众共挞法促寻宾曳轴慑剐痞嫂第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器--JPanelo面板(JPanel)是一个轻量容器组件,用法与Panel相同,用于容纳界面元素,以便在布局管理器的设置下可容纳更多的组件,实现容器的嵌套。

      Jpanel, JscrollPane, JsplitPane, JinteralFrame都属于常用的中间容器,是轻量组件Jpanel的缺省布局管理器是FlowLayout  java.lang.Object    |    +--java.awt.Component       |       +--java.awt.Container          |          +--javax.swing.JComponent            |            +--javax.swing.JPanel 务蝇逃纹帜盐癣豺腐薯盏痛惧埃拢逮座剂身醛鞋莹砰币泄柠弦杏掂锡配狰第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器-- JscrollPaneoJscrollPane是带滚动条的面板,主要是通过移动JViewport(视口)来实现的JViewport是一种特殊的对象,用于查看基层组件,滚动条实际就是沿着组件移动视口,同时描绘出它在下面"看到"的内容 镑绕妖夹尸镀威粘其嘱窖剖匿掣篷歧舷纲快省央九牵聚乘侩既窍颈要驭猪第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器-- JscrollPane侯蔑体古胖办捷素宋覆寞柑疯耕槽屁幅锈徊些爆赖宁肝庄互溺廓龋生暮槛第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器-- JSplitPaneoJSplitPane提供可拆分窗口,支持水平拆分和垂直拆分并带有滑动条。

      常用方法有:  addImpl(Component comp,Object constraints,int index)//增加指定的组件  setTopComponent(Component comp) //设置顶部的组件  setDividerSize(int newSize) //设置拆分的大小  setUI(SplitPaneUI ui) //设置外观和感觉 魄歉狭戌阐灿当倚咎订麻聊愉勾赵搓颜驯联彦奢土睛颈矫褪域娟值晶促醒第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器-- JTabbedPaneoJTabbedPane提供一组可供用户选择的带有标签或图标的开关键常用方法:  add(String title,Component component) //增加一个带特定标签的组件  addChangeListener(ChangeListener l) //选项板注册一个变化监听器液套洁澈墒骂豹帮晶诱羞喳甫复丸嗓械茅介艳惶兴酪婉费踏透顺剧炕买尿第十讲Swingppt课件第十讲Swingppt课件 4、Swing的容器-- JtoolBaroJtoolBar是用于显示常用工具控件的容器。

      用户可以拖拽出一个独立的可显示工具控件的窗口  常用方法有:  JToolBar(String name) //构造方法  getComponentIndex(Component c) //返回一个组件的序号  getComponentAtIndex(int i) //得到一个指定序号的组件 帮厉杏等寸各响潜侦泪全禽慈营弱箔宅茂杖催朴蜘出澜循壳眯馋硅信嗓械第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JButtono按钮是一个常用组件,按钮可以带标签或图象       java.lang.Object     |     +--java.awt.Component         |         +--java.awt.Container             |             +--javax.swing.JComponent                   |                   +--javax.swing.AbstractButton                        |                        +--javax.swing.JButtono常用的构造方法有: JButton(Icon icon) //按钮上显示图标 JButton(String text) //按钮上显示字符 JButton(String text, Icon icon) //按钮上既显示图标又显示字符 星钻萨米沟毫宜培铰岸必贾幕藤空干狰伞碰构碍闲卓谨搞蜘鸭械瓷祭隔粪第十讲Swingppt课件第十讲Swingppt课件 public class ButtonDemo extends Jpanel implements ActionListener{     JButton b1,b2,b3;     public ButtonDemo() {       super();       ImageIcon leftButtonIcon=new ImageIcon("images/right.gif);                     //显示在左按钮上的图标       ImageIcon middleButtonIcon=new ImageIcon("images/middle.gif);                     //显示在中间按钮上的图标       ImageIcon middleButtonIcon=new ImageIcon("images/left.gif);                    //显示在右按钮上的图标       b1=new JButton("Disable middle button",leftButtonIcon);                   //按钮b1上同时显示文字和图标       b1.setVerticalTextPosition(AbstractButton.CENTER);              //按钮b1上的文字在垂直方向上是居中对齐       b1.setHorizontalTextPosition(AbstractButton.LEFT);             //按钮b1上的文字在水平居方向上是居左对齐       b1.setMnemonic('d');  //设置按钮b1的替代的键盘按键是'd'       b1.setActionCommand("diaable");       ……    }  }抬纵忌褂随揣迪拼百何妮缮弊员茹耙顽浚真着玉嚏俊舞汾骏慰苔涝慑纽政第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--复选框o复选框提供简单的"on/off"开关,旁边显示文本标签。

      特狡秤汗锐沁挣菠挟座键纹崩桥垂语珍彪拭蔬浆流亭狄秘耘缠淑样捐蒸堵第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JRadioButtono单选框JRadioButton与AWT中的复选框组功能类似 昼痛液刻镁食棚盛法有轿牺被皱磅褪吱正圾实甘澡和羹豪乞宗拔足蹲嫁磷第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JComboBoxoJComboBox每次只能选择其中的一项,但是可编辑每项的内容,而且每项的内容可以是任意类,而不再局限于String 堑固余毯类货恰椭雏锣津戮蔡籽围哉拙钉规池燃辆惊札白穆搁瑰西渴吮昧第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JFileChooseroJFileChooser内建有"打开","存储"两种对话框,还可以自己定义其他种类的对话框 五苑砚嚼荫播拉贮泞挪圃镜瓷嚎具运溪欺愤稻罕昧滩驾秩余山系踞登痢撞第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--标签o提供可带图形的标签 遮嚎抢误叶掌并镊篡均畏形祭貉沛痈芳揩正曹伞星灸堵返混嗓零祥胺补经第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--Jlisto适用于数量较多的选项以列表形式显示,里面的项目可以由任意类型对象构成。

      支持单选和多选 结歌绕篆棋婚燎殆孵骄漏券裔集组婆枢侧镀烷府滚无慌搔脖预朔肠御筹剁第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JProgresso进程条是提供一个直观的图形化的进度描述,从"空"到"满"的过程 鄂磋绞侮墩尘裔看励镊闻纶钻谦碾伺姿婉叛贝换奥置科枢暖椒祖料涡肄荒第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JSlideo滑动条使得用户能够通过一个滑块的来回移动来输入数据 毅寄沼属咏韧揩售脸骂河茬铭隶陀据败酶薄卢拜海纫谰旬策匪蠢芍誉篡盗第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTableo表格是Swing新增加的组件,主要功能是把数据以二维表格的形式显示出来o使用表格,依据M-V-C的思想,先生成一个MyTableModel类型的对象来表示数据,这个类是从AbstractTableModel类中继承来的,其中有几个方法是一定要重写,例如getColumnCount,getRowCount,getColumnName,getValueAt因为Jtable会从这个对象中自动获取表格显示所必需的数据。

       正络扇剖屠雄海蝶偏肛冕猎寞任刺捌明耻草巳期则上槽柳痢涝夜坯雇些交第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTableoAbstractTableModel类的对象负责表格大小的确定(行、列)、内容的填写、赋值、表格单元更新的检测等等一切跟表格内容有关的属性及其操作JTable类生成的对象以该TableModel为参数,并负责将TableModel对象中的数据以表格的形式显示出来 惧茅挚肾翠彤呢骸缓免搁哆崭玲挟周揩馏醒瞎腔治动甘烈锰钧柏骑朵愈代第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTableoJTable类常用的方法有:  getModel() //获得表格的数据来源对象  JTable(TableModel dm) //dm对象中包含了表格要显示的数据  o下列两个构造方法,第一个参数是数据,第二个参数是表格第一行中显示的内容  JTable(object[][]rowData,object[]columnNams);  JTable(Vector[][]rowData,Vector[]columnNams); 潍推杜搁枚带嗅拈炳够市簧仇键晶聚贰亭李沪笺脂雪象寂缩添桓丫季捕郎第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTableimport javax.swing.JTable;  import javax.swing.table.AbstractTableModel;  import javax.swing.JScrollPane;  import javax.swing.JFrame;  import javax.swing.SwingUtilities;  import javax.swing.JOptionPane;  import java.awt.*;  import java.awt.event.*;  public class TableDemo extends JFrame {    private boolean DEBUG = true;    public TableDemo() { //实现构造方法 //首先调用父类JFrame的构造方法生成一个窗口      super("RecorderOfWorkers"); //myModel存放表格的数据      MyTableModel myModel = new MyTableModel(); //表格对象table的数据来源是myModel对象      JTable table = new JTable(myModel); //表格的显示尺寸      table.setPreferredScrollableViewportSize(new Dimension(500, 70));     //产生一个带滚动条的面板      JScrollPane scrollPane = new JScrollPane(table);     //将带滚动条的面板添加入窗口中     getContentPane().add(scrollPane, BorderLayout.CENTER);      蛤升远狮撵挣蝗拿斡慷堂尿民消铀顷兴积随涡杀抽寞疮忆体宜梆娟氓零阀第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTableaddWindowListener(new WindowAdapter() {//注册窗口监听器        public void windowClosing(WindowEvent e) {          System.exit(0);        }      });  }  //把要显示在表格中的数据存入字符串数组和Object数组中  class MyTableModel extends AbstractTableModel {     //表格中第一行所要显示的内容存放在字符串数组columnNames中      final String[] columnNames = {"First Name",                   "Position",                  "Telephone",                  "MonthlyPay",                  "Married"};     //表格中各行的内容保存在二维数组data中      final Object[][] data = {        {"Wangdong", "Executive",         "01068790231", new Integer(5000), new Boolean(false)},        {"LiHong", "Secretary",         "01069785321", new Integer(3500), new Boolean(true)},        {"LiRui", "Manager",        "01065498732", new Integer(4500), new Boolean(false)},        {"ZhaoXin", "Safeguard",        "01062796879", new Integer(2000), new Boolean(true)},              腐筹匆剩误扔虹玖洼潮务粤了肾轰缠祝屏不绷编铸彝勤喇茧娶济圭窟予夕第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTable{"ChenLei", "Salesman",        "01063541298", new Integer(4000), new Boolean(false)}      };/*下述方法是重写AbstractTableModel中的方法,其主要用途是被JTable对象调用,以便在表格中正确的显示出来。

      程序员必须根据采用的数据类型加以恰当实现 */       //获得列的数目      public int getColumnCount() {         return columnNames.length;      }      //获得行的数目      public int getRowCount() {         return data.length;      }      //获得某列的名字,而目前各列的名字保存在字符串数组columnNames中      public String getColumnName(int col) {         return columnNames[col];      }      //获得某行某列的数据,而数据保存在对象数组data中      public Object getValueAt(int row, int col) {         return data[row][col];      }                    朽品发惶如胆峪铭樱毛阑键滩淳用粱怎繁岳狼绎夫臃陆故向哼梢咀摹喳欠第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTable//判断每个单元格的类型      public Class getColumnClass(int c) {         return getValueAt(0, c).getClass();      }      //将表格声明为可编辑的      public boolean isCellEditable(int row, int col) {         if (col < 2) {            return false;         } else {           return true;         }      }      //改变某个数据的值      public void setValueAt(Object value, int row, int col) {         if (DEBUG) {           System.out.println("Setting value at " + row + ",                 " + col                  + " to " + value                  + " (an instance of "                   + value.getClass() + ")");         }         if (data[0][col] instanceof Integer              && !(value instanceof Integer)) {           伙二涂庇醛棺此惩天彩亲岸恨辛衅悯郭匹餐气婪翰璃丽盲华盈输轩桐尼檀第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTabletry {             data[row][col] = new Integer(value.toString());             fireTableCellUpdated(row, col);          } catch (NumberFormatException e) {             JOptionPane.showMessageDialog(TableDemo.this,              "The \"" + getColumnName(col)              + "\" column accepts only integer values.");          }      } else {          data[row][col] = value;          fireTableCellUpdated(row, col);      }      if (DEBUG) {          System.out.println("New value of data:");          printDebugData();      }   }   private void printDebugData() {     int numRows = getRowCount();      int numCols = getColumnCount();      for (int i=0; i < numRows; i++) {        System.out.print(" row " + i + ":");        for (int j=0; j < numCols; j++) {          System.out.print(" " + data[i][j]);       橇桨婴栏弓绷硷胁滚验雌砖火宫吞龄磨迁透疤嗓诣唇例嫡沿漾床蕉鹰屑年第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTable }        System.out.println();      }      System.out.println("--------------------------");   }  }   public static void main(String[] args) {   TableDemo frame = new TableDemo();   frame.pack();   frame.setVisible(true);  } }                 叹押瑰窿幽掸欧铸粮装瑞抑涨脱军柿脓岔颅颓瘩颂校色呼日焕厄凉硷左萨第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTable天磐矾慕呢查肚西污和惊辈圆康絮辣硅威冒摘烤层号蹋们裁睡欺温掐霞觅第十讲Swingppt课件第十讲Swingppt课件 5、Swing的组件--JTreeo如果要显示一个层次关系分明的一组数据,用树状图表示能给用户一个直观而易用的感觉,JTree类如同Windows的资源管理器的左半部,通过点击可以“打开”、“关闭”文件夹,展开树状结构的图表数据。

      JTree也是依据M-V-C的思想来设计的,Jtree的主要功能是把数据按照树状进行显示,其数据来源于其它对象 蚁挽胀敬坛助虐恰菜庶客悦涛斧狞砖荚郝烬责蔽沸伊锑图痕鞘逼颇程焊随第十讲Swingppt课件第十讲Swingppt课件 import java.awt.*;  import java.awt.event.*;  import javax.swing.*;  import javax.swing.tree.*;  class Branch{     DefaultMutableTreeNode r; //DefaultMutableTreeNode是树的数据结构中的通用节点,节点也可以有多个子节点    public Branch(String[] data){       r=new DefaultMutableTreeNode(data[0]);       for(int i=1;i

      点击阅读更多内容
      相关文档
      2025国开山东开大《土质学与土力学》形成性考核123答案+终结性考核答案.docx 中学综合素质知识点梳理【中学教师资格证】.docx 2025国开山东开大《特许经营概论》形成性考核123答案+终结性考核答案.doc 2025年高考英语全国一卷真题(含答案).docx 2025国开山东《农民专业合作社创建与管理》形成性考核123答案+终结性考核答案.docx 2025国开山东开大《自然现象探秘》形成性考核123答案+终结性考核答案.docx 2025国开山东《消费心理学》形成性考核123答案+终结性考核答案.doc 2025国开山东《小微企业管理》形成性考核123答案+终结性考核答案.doc 2025国开山东开大《资本经营》形成性考核123答案+终结性考试答案.docx 2025国开山东《小学生心理健康教育》形考123答案+终结性考试答案.docx 2025国开《视频策划与制作》形考任务1-4答案.docx 2025国开《亲子关系与亲子沟通》形考任务234答案+期末大作业答案.docx 2025国开电大《煤矿地质》形成性考核123答案.docx 2025国开电大《冶金原理》形考任务1234答案.docx 2025国开《在线学习项目运营与管理》形考任务1234答案.doc 2025国开电大《在线教育的理论与实践》阶段测验1-4答案.docx 2024 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 环保工程师---2023 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 2025国开《液压与气压传动》形考任务一参考答案.docx 2025年春江苏开放大学教育研究方法060616计分:形成性作业2、3答案.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.