JInternal.docx

上传人:b****9 文档编号:25662206 上传时间:2023-06-11 格式:DOCX 页数:8 大小:17.85KB
下载 相关 举报
JInternal.docx_第1页
第1页 / 共8页
JInternal.docx_第2页
第2页 / 共8页
JInternal.docx_第3页
第3页 / 共8页
JInternal.docx_第4页
第4页 / 共8页
JInternal.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

JInternal.docx

《JInternal.docx》由会员分享,可在线阅读,更多相关《JInternal.docx(8页珍藏版)》请在冰豆网上搜索。

JInternal.docx

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();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1