JInternal.docx
- 文档编号:25662206
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:8
- 大小:17.85KB
JInternal.docx
《JInternal.docx》由会员分享,可在线阅读,更多相关《JInternal.docx(8页珍藏版)》请在冰豆网上搜索。
JInternal
JInternalFrame的使用
类层次结构图:
--javax.swing.JComponent
--javax.swing.JInternalFrame
JinternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JinternalFrame是lightweightcomponent,也就JInternalFrame不能单独出现,必须依附在最上层组件上。
由于这个特色,JInternalFrame能够利用java提供的LookandFeel功能作出完全不同于原有操作系统所提供的窗口外型,也比JFrame更具有弹性。
一般我们会将InternalFram加入DesktopPane方便管理,DesktopPane是一种特殊的Layeredpane,用来建立虚拟桌面(VitualDesktop).它可以显示并管理众多InternalFrame之间的层次关系。
以下是JDesktopPane的类层次结构图;
类层次结构图:
--javax.swing.JComponent
--javax.swing.JLayeredPane
--javax.swing.JDesktop
我们先来看看如何构造JInternalFrame与JDesktopPane,再来看它跟DesktopPane之间的关系。
下面分别是JInternalFram与JDesktopPane的构造函数:
JInternalFrame构造函数:
JInternalFrame():
建立一个不能更改大小、不可关闭、不可最大最小化、也没有标题的InternalFrame。
JInternalFrame(Stringtitle):
建立一个不能更改大小、不可关闭、不可最大最小化、但具有标题的InternalFrame。
JInternalFrame(Stringtitle,booleanresizable):
建立一个不可关闭、不可最大最小化、但可变更大小且具有标题的InternalFrame。
JInternalFrame(Stringtitle,booleanresizable,booleanclosable):
建立一个可关闭、可更改大小、且具有标题,但不可最大化最小化的InternalFrame.
JInternalFrame(Stringtitle,booleanresizable,booleanclosable,booleanmaximizable):
建立一个可关闭、可更改大小、具有标题、可最大化,但不可最小化的InternalFrame.
JInternalFrame(Stringtitle,booleanresizable,booleanclosable,booleanmaximizable,booleaniconifiable):
建立一个可关闭、可更改大小、具有标题、可最大化与最小化的InternalFrame.
JDesktopPane构造函数:
JDesktopPane():
建立JDesktopPane组件。
如何利用JDesktoPane来管理JInternalFrame:
JInternalFrame1.java
importjavax.swing.*;
importjava.awt.event.*;
importjava.awt.*;
publicclassJInternalFrame1extendsJFrameimplementsActionListener{
JDesktopPanedesktopPane;
intcount=1;
publicJInternalFrame1(){
super("JInternalFrame1");
ContainercontentPane=this.getContentPane();
contentPane.setLayout(newBorderLayout());
JButtonb=newJButton("CreateNewInternalFrames");
b.addActionListener(this);//当用户按下按钮时,将运行actionPerformed()中的程序
contentPane.add(b,BorderLayout.SOUTH);
/*建立一个新的JDesktopPane并加入于contentPane中
*/
desktopPane=newJDesktopPane();
contentPane.add(desktopPane);
setSize(350,350);
show();
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
/*产生一个可关闭、可改变大小、具有标题、可最大化与最小化的InternalFrame.
*/
publicvoidactionPerformed(ActionEvente)
{
JInternalFrameinternalFrame=newJInternalFrame(
"InternalFrame"+(count++),true,true,true,true);
internalFrame.setLocation(20,20);
internalFrame.setSize(200,200);
internalFrame.setVisible(true);
//取得JInternalFrame的ContentPane,用以加入新的组件。
ContainericontentPane=internalFrame.getContentPane();
JTextAreatextArea=newJTextArea();
JButtonb=newJButton("InternalFrameButton");
/*将JTextArea与JButton对象加入JInternalFrame中。
由此呆知,JInteranlFrame加入组件
*的方式与JFrame是一模一样。
*/
icontentPane.add(textArea,"Center");
icontentPane.add(b,"South");
//将JInternalFrame加入JDesktopPane中,如此一来,即使产生很多JInternalFrame,JDesktopPane也
//能将它们之间的关系管理得相当良好。
desktopPane.add(internalFrame);
try{
internalFrame.setSelected(true);
}catch(java.beans.PropertyVetoExceptionex){
System.out.println("Exceptionwhileselecting");
}
}
publicstaticvoidmain(String[]args){
newJInternalFrame1();
}
}
JPanel的使用:
类层次结构图:
--javax.swing.JComponent
--javax.swing.JPanel
Panel民是java中时常用到的容器之一,Panel除了可以让组件加入外,有效的利用Panel可以使版面管理更为容易。
Swing的JPanel支持doublebuffering的功能,使得JPanel在处理动画上更为流畅,较不会有画面闪烁的情况发生。
下面为它的构造函数:
JPanel构造函数:
JPanel():
建立一个具有doublebuffering功能的JPanel,默认的版面管理是FlowLayout.
JPanel(booleanisDoubleBuffered):
选择建立是否具有doublebuffering功能的JPanel,默认的版面管理是FlowLayout.
JPanel(LayoutManagerlayout):
建立一个具有doublebuffering功能JPanel,可自定义版面管理器.
JPanel(LayoutManagerlayout,booleanisDoubleBuffered):
选择建立是否具有doublebuffering功能的JPanel,并自定义版面管理器.
下面这个例子我们用JPanel来排列5个JLabel对象,你将可以发现利用JPanel搭配版面管理,可以做出更复杂的排列效果。
JPanel1.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassJPanel1
{
publicJPanel1()
{
JFramef=newJFrame("JPanelDemo");
ContainercontentPane=f.getContentPane();
contentPane.setLayout(newGridLayout(2,1));
JLabel[]label=newJLabel[5];
for(inti=0;i { label[i]=newJLabel("Label"+(i+1),JLabel.CENTER); label[i].setBackground(Color.lightGray); label[i].setBorder(BorderFactory.createEtchedBorder()); label[i].setOpaque(true);//setOpaqueIture)方法的目的是让组件变成不透明,这样我们在JLabel上所设置的颜色才能显示出来。 } JPanelpanel1=newJPanel(newGridLayout(1,1)); panel1.add(label[0]); JPanelpanel2=newJPanel(newGridLayout(1,2)); JPanelpanel3=newJPanel(newGridLayout(1,2)); panel3.add(label[1]); panel3.add(label[2]); JPanelpanel4=newJPanel(newGridLayout(2,1)); panel4.add(label[3]); panel4.add(label[4]); panel2.add(panel3); panel2.add(panel4); contentPane.add(panel1); contentPane.add(panel2); f.pack(); f.show(); f.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); } publicstaticvoidmain(String[]arg) { newJPanel1(); } } 由上例可知,利用JPanel可以使版面的排列方式更生动,若没有JPanel的帮助,想直接由contentPane排列成如上例所示,便必须借助复杂的GridBagLayout版面管理器了。 JSplitPane的使用: --javax.swing.JComponent --javax.swing.JSplitPane SplitPane(分割面版)一次可将两个组件同时显示在两个显示区中,若你想要同时在多个显示区显示组件,你便必须同时使用多个SplitPane。 JSplitPane提供两个常数让你设置到底是要水平分割还是垂直分割。 这两个常数分别是: HORIZONTAL_SPIT,VERTICAL_SPLIT.除了这两个重要的常数外,JSplitPane还提供许多类常数让你使用,我们会在下面的例子中介绍比较常用的类常数,其余信息请参年javaAPI. JsplitPane构造函数: JSplitPane(): 建立一个新的JSplitPane,里面含有两个默认按钮,并以水平方向排列,介没有ContinuousLayout功能。 JSplitPane(intnewOrientation): 建立一个指定水平或垂直方向切割JSplitPane,但没有ContinuousLayout功能。 JSplitPnae(intnewOrientation,booleannewContinuousLayout): 建立一个指定水平或垂直方向切割的JSplitPane,且指定是否具有ContinuousLayout功能。 JSplitPane(intnewOrientation,booleannewContinuousLayout,ComponentnewLeftComponent,ComponentnewRightComponent): 建立一个指定水平或垂直方向切割的JSplitPane,且指定显示区所要显示的组件,并设置是否ContinuousLayout功能。 JSplitPane(intnewOrientation,COmponentnewLeftComponent,COmponentnewRightComponent): 建立一个指定水平或垂直方向切割的JSplitPane,且指定显示区所要显示的组件,但没有ContinuousLayout功能。 上面所说的ContinuousLayout意思是指当你拖曳切割面版的分隔线时,窗口内的组件是否会随着分隔线的拖曳而动态改变大小。 newContinuousLayout是一个boolean值,若设为true,则组件大小会随着分隔线的拖曳而一起改动;若设为false,则组件大小在分隔线停止改动时才确定。 你也可以使用JSplitPane中的setContinuousLayout()方法来设置此项目。 JSplitPane的例子: JSplitPane1.java importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassJSplitPane1{ publicJSplitPane1(){ JFramef=newJFrame("JSplitPaneDemo"); ContainercontentPane=f.getContentPane(); JLabellabel1=newJLabel("Label1",JLabel.CENTER); label1.setBackground(Color.green); label1.setOpaque(true);//setOpaqueIture)方法的目的是让组件变成不透明,这样我们在JLabel上所设置的颜色 //才能显示出来。 JLabellabel2=newJLabel("Label2",JLabel.CENTER); label2.setBackground(Color.pink); label2.setOpaque(true); JLabellabel3=newJLabel("Label3",JLabel.CENTER); label3.setBackground(Color.yellow); label3.setOpaque(true); /*加入label1,label2到splitPane1中,并设置此splitPane1为水平分割且具有ContinuousLayout的 *功能。 */ JSplitPanesplitPane1=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,false,label1,label2); /*设置splitPane1的分隔线位置,0.3是相对于splitPane1的大小而定,因此这个值的范围在0.0~1.0 *中。 若你使用整数值来设置splitPane的分隔线位置,如第34行所示,则所定义的值以pixel为计算单位 */ splitPane1.setDividerLocation(0.3); /*设置JSplitPane是否可以展开或收起(如同文件总管一般),设为true表示打开此功能。 */ splitPane1.setOneTouchExpandable(true); splitPane1.setDividerSize(10);//设置分隔线宽度的大小,以pixel为计算单位。 JSplitPanesplitPane2=newJSplitPane(JSplitPane.VERTICAL_SPLIT,false,splitPane1,label3); splitPane2.setDividerLocation(35); //设置JSplitPane是否可以展开或收起(如同文件总管一般),设为true表示打开此功能. splitPane2.setOneTouchExpandable(false); splitPane2.setDividerSize(5); contentPane.add(splitPane2); f.setSize(250,200); f.show(); f.addWindowListener( newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } } ); } publicstaticvoidmain(String[]args){ newJSplitPane1(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JInternal
![提示](https://static.bdocx.com/images/bang_tan.gif)