欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Root Pane Container(四)

系統(tǒng) 2013 0

8.5 JApplet類

JApplet類是AWT Applet類的擴展。為了在使用Swing組件的applet中能正確的進行事件處理,我們applet必須繼承JApplet,而不是Applet。

JApplet的作用與其他的實現(xiàn)了RootPaneContainer接口的高層窗口相同。JApplet與Applet之間一個重要的區(qū)別就是默認的布局管理器。因為我們向JApplet的內(nèi)容面析添加組件,其默認的布局管理器為BorderLayout。這與Applet的默認布局管理器FlowLayout不同。另外,Swing applet還可以具有一個工具欄,或者更為特定的JMenuBar,這是applet的JRootPane的另一個屬性。

如果我們計劃部署一個使用Swing組件的applet,最好是使用Sun Microsystems所提供的Java插件,因為這會隨運行時安裝Swing庫。

如查我們要擴展JApplet類,他只有一個重要的protected方法:

        
          protected
        
         JRootPane createRootPane()
      

?

8.6 配合桌面使用

Spring提供了對一個通常窗口或是桌面內(nèi)的窗體集合進行管理。正如我們在第1章所討論的,這種管理通常被稱之為MDI。窗體可以位于其他的窗體之上,或者是可以被拖動,而其外觀適當當前的觀感。這些窗體是JInternalFrame類的實例,而桌面是一個稱之為JDesktopPane的特殊JLayeredPane。桌面內(nèi)窗體的管理是DesktopManager的責任,其中所提供的默認實現(xiàn)是DefaultDesktopManager。桌面上的JInternalFrame的圖標形式是通過JDesktopIcon的內(nèi)聯(lián)類JInternalFrame來表示的。同時有InternalFrmaeListener,InternalFrameAdapter以及InternalFrameEvent用于事件處理。

首先,我們來看一下構成桌面的部分,然后我們會看到使用這些部分的一個完整示例。

8.6.1 JInternalFrame類

JInternalFrame類與JFrame類類似。他是一個高層窗口,使用RootPaneContainer接口,但是并不是一個頂層窗口。我們必須將內(nèi)部窗體放在另一個頂層窗口中。當我們拖動時,內(nèi)部窗體會停留在其窗口的邊界之內(nèi),這通常是一個JDesktopPane。另外,內(nèi)部窗體是輕量級的,并且提供了一個UI委托從而使得內(nèi)部窗體看起來類似當前配置的觀感。

創(chuàng)建JInternalFrame

JInternalFrame有六個構造函數(shù):

        
          public
        
         JInternalFrame() JInternalFrame frame = 
        
          new
        
         JInternalFrame(); 
        
          public
        
         JInternalFrame(String title) JInternalFrame frame = 
        
          new
        
         JInternalFrame("
        
          The Title
        
        "); 
        
          public
        
         JInternalFrame(String title, 
        
          boolean
        
         resizable) JInternalFrame frame = 
        
          new
        
         JInternalFrame("
        
          The Title
        
        ", 
        
          true
        
        ); 
        
          public
        
         JInternalFrame(String title, 
        
          boolean
        
         resizable, 
        
          boolean
        
         closable) JInternalFrame frame = 
        
          new
        
         JInternalFrame("
        
          The Title
        
        ", 
        
          false
        
        , 
        
          true
        
        ); 
        
          public
        
         JInternalFrame(String title, 
        
          boolean
        
         resizable, 
        
          boolean
        
         closable, 
        
          boolean
        
         maximizable) JInternalFrame frame = 
        
          new
        
         JInternalFrame("
        
          The Title
        
        ", 
        
          true
        
        , 
        
          false
        
        , 
        
          true
        
        ); 
        
          public
        
         JInternalFrame(String title, 
        
          boolean
        
         resizable, 
        
          boolean
        
         closable, 
        
          boolean
        
         maximizable, 
        
          boolean
        
         iconifiable) JInternalFrame frame = 
        
          new
        
         JInternalFrame("
        
          The Title
        
        ", 
        
          false
        
        , 
        
          true
        
        , 
        
          false
        
        , 
        
          true
        
        );
      

?

這些構造函數(shù)以一個向另一個添加參數(shù)的方式進行級聯(lián)。無參數(shù)時,所創(chuàng)建的JInternalFrame沒有標題,并且不能調(diào)整大小,關閉,最大化或是圖標化。然而,內(nèi)部窗體總是可以拖動的。

JInternalFrame屬性

表8-9列出了JInternalFrame類的30個不同屬性。layer屬性列出了兩次,因為他具有兩個設置方法,其中一個用于int,而另一個用于Integer。

JInternalFrame屬性

?

屬性名

數(shù)據(jù)類型

訪問性

accessibleContext

AccessibleContext

只讀

closable

boolean

讀寫綁定

closed

boolean

讀寫綁定

contentPane

Container

讀寫綁定

defaultCloseOperation

int

讀寫

desktopIcon

JInternalFrame.JDesktopIcon

讀寫綁定

desktopPane

JDesktopPane

只讀

focusCycleRoot

boolean

讀寫

focusCycleRootAncester

Container

只讀

focusOwner

Component

只讀

frameIcon

Icon

讀寫綁定

glassPane

Component

讀寫綁定

icon

boolean

讀寫綁定

iconifiable

boolean

讀寫

internalFrameListeners

InternalFrameListener[]

只讀

jMenuBar

JMenuBar

讀寫綁定

layer

int

讀寫

layer

Integer

只寫

layeredPane

JLayeredPane

讀寫綁定

layout

LayoutManager

只寫

maximizable

boolean

讀寫綁定

maximum

boolean

讀寫

mostRecentFocusOwner

Component

只讀

normalBounds

Rectangle

讀寫

resizable

boolean

讀寫綁定

rootPane

JRootPane

讀寫綁定

selected

boolean

讀寫綁定

title

String

讀寫綁定

UI

InternalFrameUI

讀寫

UIClassID

String

只讀

warningString

String

只讀

對于Java 1.3及以后的版本,JInternalFrame的初始defaultCloseOperation屬性設置為DISPOSE_ON_CLOSE。以前版本的默認設置為HIDE_ON_CLOSE。我們可以將這個屬性設置為前面的表8-6中列出的WindowConstants的值。

normalBounds屬性描述了當一個圖標化的內(nèi)部窗體取消息圖標化時應該在哪里顯示。focusOwner屬性在特定的JInternalFrame被激活時提供了一個實際帶有輸入焦點的Component。

在Swing類中,JInternalFrame只包含四個限制屬性:closed, icon, maximum以及selected。他們與四個boolean構造函數(shù)參數(shù)直接相關。每一個都可以允許我們在改變其設置時檢測當前的屬性狀態(tài)。然而,因為屬性是受限制的,當我們要設置一個屬性時,我們所做的嘗試必須位于一個try-catch塊中,捕捉PropertyVetoException:

        
          try
        
         { 
        
          // Try to iconify internal frame
        
         internalFrame.setIcon(
        
          false
        
        ); } 
        
          catch
        
         (PropertyVetoException propertyVetoException) { System.out.println("
        
          Rejected
        
        "); }
      

?

為了有助于我們使用這些綁定屬性,JInternalFrame類定義了一個11個常量,如表8-10所示。他們表示在PropertyChangeListener中通過PropertyChangeEvent的getPropertyName()方法返回的字符串。

JInternal屬性常量

屬性名常量

關聯(lián)屬性
CONTENT_PANE_PROPERTY

contentPane

FRAME_ICON_PROPERTY

frameIcon

GLASS_PANE_PROPERTY

glassPane

IS_CLOSED_PROPERTY

closed

IS_ICON_PROPERTY

icon

IS_MAXIMUM_PROPERTY

maximum

IS_SELECTED_PROPERTY

selected

LAYERED_PANE_PROPERTY

layeredPane

MENU_BAR_PROPERTY

jMenuBar

ROOT_PANE_PROPERTY

rootPane

TITLE_PROPERTY

title

下面的類示例演示了在PropertyChangeListener中常量的使用。

        
          package
        
         swingstudy.ch08; 
        
          import
        
         java.beans.PropertyChangeEvent; 
        
          import
        
         java.beans.PropertyChangeListener; 
        
          import
        
         javax.swing.JInternalFrame; 
        
          public
        
        
          class
        
         InternalFramePropertyChangeHandler 
        
          implements
        
         PropertyChangeListener { @Override 
        
          public
        
        
          void
        
         propertyChange(PropertyChangeEvent event) { 
        
          // TODO Auto-generated method stub
        
         String propertyName = event.getPropertyName(); 
        
          if
        
        (propertyName.equals(JInternalFrame.IS_ICON_PROPERTY)) { System.out.println("
        
          Icon property changed. React.
        
        "); } } }
      

?

處理JInternalFrame事件

為了幫助我們像使用JFrame一樣來使用JInternalFrame,有一個額外的事件監(jiān)聽器來負責內(nèi)部窗體的打開與關閉的相關事件。這個接口名為InternalFrameListener,其定義如下。其作用類似于AWT的WindowListener接口,但是所用的JInternalFrame類,而不是AWT的Window類。

        
          public
        
        
          interface
        
         InternalFrameListener 
        
          extends
        
         EventListener { 
        
          public
        
        
          void
        
         internalFrameActivated(InternalFrameEvent internalFrameEvent); 
        
          public
        
        
          void
        
         internalFrameClosed(InternalFrameEvent internalFrameEvent); 
        
          public
        
        
          void
        
         internalFrameClosing(InternalFrameEvent internalFrameEvent); 
        
          public
        
        
          void
        
         internalFrameDeactivated(InternalFrameEvent internalFrameEvent); 
        
          public
        
        
          void
        
         internalFrameDeiconified(InternalFrameEvent internalFrameEvent); 
        
          public
        
        
          void
        
         internalFrameIconified(InternalFrameEvent internalFrameEvent); 
        
          public
        
        
          void
        
         internalFrameOpened(InternalFrameEvent internalFrameEvent); }
      

?

另外,與具有所有WindowListener方法樁的WindowApapter類類似,也有一個具有所有InternalFrameListener方法樁的InternalFrameAdapter類。如果我們并不是對JInternalFrame發(fā)生的所有事件感興趣,我們可以繼承InternalFrameAdapter類,并且只重寫我們所感興趣的方法。例如,列表8-5中所示的監(jiān)聽器只對圖標化方法感興趣。無需提供InternalFrameListener的其他五個方法的樁實現(xiàn),我們只需要繼承InternalFrameAdapter,并重寫兩個相關的方法。

        
          package
        
         swingstudy.ch08; 
        
          import
        
         javax.swing.JInternalFrame; 
        
          import
        
         javax.swing.event.InternalFrameAdapter; 
        
          import
        
         javax.swing.event.InternalFrameEvent; 
        
          public
        
        
          class
        
         InternalFrameIconifyListener 
        
          extends
        
         InternalFrameAdapter { 
        
          public
        
        
          void
        
         internalFrameIconified(InternalFrameEvent event) { JInternalFrame source = (JInternalFrame)event.getSource(); System.out.println("
        
          Iconified: 
        
        "+source.getTitle()); } 
        
          public
        
        
          void
        
         internalFrameDeiconified(InternalFrameEvent event) { JInternalFrame source = (JInternalFrame)event.getSource(); System.out.println("
        
          Deiconified: 
        
        "+source.getTitle()); } }
      

?

InternalFrameEvent是AWTEvent的子類。為了定義由AWTEvent的public int getID()方法返回的值,InternalFrameEvent每一個可用的特定事件子類定義了一個常量。表8-11列出了九個常量。我們也可以通過事件的getInternalFrame()方法來獲得實際的JInternalFrame。

InternalFrameEvent事件子類型

事件子類型ID

關聯(lián)的接口方法

INTERNAL_FRAME_ACTIVATED

internalFrameActivated

INTERNAL_FRAME_CLOSED

internalFrameClosed

INTERNAL_FRAME_CLOSING

internalFrameClosing

INTERNAL_FRAME_DEACTIVATED

internalFrameDeactivated

INTERNAL_FRAME_DEICONIFIED

internalFrameDeiconified

INTERNAL_FRAME_FIRST

N/A

INTERNAL_FRAME_ICONIFIED

internalFrameIconified

INTERNAL_FRAME_LAST

N/A

INTERNAL_FRAME_OPENED

internalFrameOpened

自定義JInternalFrame觀感

因為JInternalFrame是一個輕量級組件,他具有可安裝的觀感。每一個可安裝的Swing觀感提供了一個不同的JInternalFrame外觀以及默認的UIResource值集合。圖8-5預安裝的觀感類型集合的JWindow窗口外觀。

Swing_8_5_motif

Swing_8_5_ocean

Swing_8_5_windows

表8-12中列出了JInternalFrame的可用UIResource相關屬性的集合。對于JInternalFrame常量,有60個不同的屬性,包括內(nèi)部窗體的標題面板的屬性。

JInternalFrame UIResource元素

?

屬性字符串

對象類型

InternalFrame.actionMap

ActionMap

InternalFrame.activeBroderColor

Color

InternalFrame.activeTitleBackground

Color

InternaleFrame.activeTitleForeground

Color

InternalFrame.activeTitleGradient

List

InternalFrame.border

Border

InternalFrame.borderColor

Color

InternalFrame.borderDarkShadow

Color

InternalFrame.borderHighlight

Color

InterenalFrame.borderLight

Color

InternaleFrame.borderShadow

Color

InternaleFrame.borderWidth

Integer

InternalFrame.closeButtonToolTip

String

InternalFrame.closeIcon

Icon

InternalFrmae.closeSound

String

InternalFrame.icon

Icon

InternalFrame.iconButtonToolTip

String

InternalFrame.iconifyIcon

Icon

InternalFrame.inactiveBorderColor

Color

InternalFrame.inactiveTitleBackground

Color

InternalFrame.inactiveTitleForeground

Color

InternalFrame.inactiveTitleGradient

List

InternalFrame.layoutTitlePaneAtOrigin

Boolean

InternalFrame.maxButtonToolTip

String

InternalFrame.maximizeIcon

Icon

InternalFrame.maximizeSound

String

InternalFrame.minimizeIcon

Icon

InternalFrame.minimizeIconBackground

Color

InternalFrame.minimizeSound

String

InternalFrame.optionDialogBorder

Border

InternalFrame.paletteBorder

Border

InternalFrame.paletteCloseIcon

Icon

InternalFrame.paletteTitleHeight

Integer

InternaleFrame.resizeIconHighlight

Color

InternalFrame.resizeIconShadow

Color

InternalFrame.restoreButtonToolTip

String

InternalFrame.restoreDownSound

String

InternalFrame.restoreUpSound

String

InternalFrame.titlebuttonHeight

Integer

InternalFrame.titleButtonWidth

Integer

InternalFrame.titleFont

Font

InternalFrame.titlePaneHeight

Integer

InternalFrame.useTaskBar

Boolean

InternalFrame.windowBindings

Object[]

InternalFrameTitlePane.closebuttonAccessibleName

String

InternalFrameTitlePane.closebuttonText

String

InternalFrameTitlePane.closeIcon

Icon

InternalFrameTitlePane.iconifyButtonAccessibleName

String

InternalFrameTitlePane.iconifyIcon

Icon

InternalFrameTitlePane.maximizeButtonAccessiblName

String

InternalFrameTitlePane.maximizeButtonText

String

InternalFrameTitlePane.minimizeIcon

Icon

InternalFrameTitlePane.moveButtonText

String

InternalFrameTitlePane.restoreButtonText

String

InternalFrameTitlePane.sizeButtonText

String

InternalFrameTitlePane.titlePaneLayout

LayoutManager

InternalFrameTitlePaneUI

String

InternalFrameUI

String

除了表8-12中許多可配置屬性以外,對于Metal觀感,我們還可以通過特殊的客戶端屬性JInternalFrame.isPalette來將內(nèi)部窗體設計為一個palette。當設置為Boolean.TRUE時,內(nèi)部窗體的外觀會與其他窗體略微不同,并且具有較短的標題欄,如圖8-6所示。

Swing_8_6

如果我們同時在桌面的PALETTE_LAYER上添加了一個內(nèi)部窗體,則這個窗體會位于其他所有窗體之上(如圖8-6所示):

        JInternalFrame palette = 
        
          new
        
         JInternalFrame("
        
          Palette
        
        ", 
        
          true
        
        , 
        
          false
        
        , 
        
          true
        
        , 
        
          false
        
        ); palette.setBounds(150, 0, 100, 100); palette.putClientProperty("
        
          JInternalFrame.isPalette
        
        ", Boolean.TRUE); desktop.add(palette, JDesktopPane.PALETTE_LAYER);
      

?

創(chuàng)建圖8-6所示的程序的完整代碼顯示在本章稍后的列表8-6中。

修改JDesktopIcon

JInternalFrame依賴一個內(nèi)聯(lián)類JDesktopIcon來為JInternalFrame的圖標化顯示提供UI委托。這個類只是用來這種功能的一個特殊的JComponent,而不是如其名字暗示的一個特殊的Icon實現(xiàn)。事實上,JDesktopIcon類的注釋表明這個類是臨時的,所以我們不應直接對其進行自定義。(當然,這個類會存在一段時間。)

如果我們需要自定義JDesktopIcon,我們可以修改一些UIResource相關的屬性。表8-13列出了JDesktopIcon組件的八個UIResource相關屬性。

JInternalFrame.JDesktopIcon UIResource元素

屬性字符串

對象類型

DesktopIcon.background

Color

DesktopIcon.border

Border

DesktopIcon.font

Font

DesktopIcon.foreground

Color

DesktopIcon.icon

Icon

DesktopIcon.width

Integer

DesktopIcon.windowBindings

Object[]

DesktopIconUI

String

8.6.2 JDesktopPane類

與內(nèi)部窗體組合配合使用的另一個類就是JDesktopPane類。桌面面板的目的就是包含內(nèi)部窗體集合。當內(nèi)部窗體被包含在一個桌面面板中時,他們將其行為的大部分委托給桌面面板的桌面管理器。我們將會在本章稍后詳細了解DesktopManager接口。

創(chuàng)建JDesktopPane

JDesktopPane只有一個無參數(shù)的構造函數(shù)。一旦創(chuàng)建,我們通常將其放在由BorderLayout管理的容器的中部。這可以保證桌面占據(jù)容器的所有空間。

將內(nèi)部窗體添加到JDesktopPane

JDesktopPane并沒有實現(xiàn)RootPaneContainer。我們并不能直接將組件添加到JRootPane內(nèi)的不同面板中,而是直接將其添加到JDesktopPane:

      desktop.add(anInternalFrame);
    

JDesktopPane屬性

如表8-14所示,JDesktopPane有八個屬性。位于allFrames屬性數(shù)組索引0外的JInternalFrame是位于桌面前面的內(nèi)部窗體(JInternalFrame f = desktop.getAllFrames()[0])。除了獲取JDesktopPane中的所有窗體以外,我們還可以僅獲取特定層的窗體:public JInternalFrame[] getAllFramesInLayer(int layer)。

可用的dragMode屬性設置可以為類的LIVE_DRAG_MODE與OUTLINE_DRAG_MODE常量。

JDesktopPane屬性

屬性名
數(shù)據(jù)類型

訪問性

accessibleContext
AccessibleContext

只讀

allFrames
JInternalFrame[]

只讀

desktopManager
DesktopManager

讀寫

dragMode
int

讀寫綁定

opaque
boolean

只讀

selectedFrame
JInternalFrame

讀寫

UI
DesktopPaneUI

讀寫

UIClassID
String

只讀

自定義JDesktopPane觀感

回到圖8-5,我們可以看到JDesktopPane中的JInternalFrame對象。JDesktopPane的基本觀感與每一個觀感相同。如表8-15所示,對JDesktopPane并沒有太多可以配置的UIResource相關屬性。

JDesktopPane UIResource元素

屬性字符串

對象類型

desktop

Color

Desktop.ancestorInputMap

InputMap

Desktop.background

Color

Desktop.windowBindings

Object[]

DesktopPane.actionMap

ActionMap

DesktopPaneUI

String

完整的桌面示例

現(xiàn)在我們已經(jīng)了解了主要的桌面相關類,現(xiàn)在我們來看一下完整的示例。基本的過程包括創(chuàng)建一組JInternalFrame對象,然后將放在一個JDesktopPane中。如果需要,可以對每一個內(nèi)部窗體的單個組件進行事件處理,也可以對單個窗體進行事件處理。在這個示例中簡單的使用了前面的列表8-5中所給出的InternalFrameIconifyListener類來監(jiān)聽正在圖標化和取消圖標化的內(nèi)容窗體。

圖8-6顯示了程序啟動時的樣子。一個特定的內(nèi)部窗體被設計為palette,并且允許了拖放模式。

列表8-6顯示了這個示例的完整代碼。

        
          package
        
         swingstudy.ch08; 
        
          import
        
         java.awt.BorderLayout; 
        
          import
        
         java.awt.EventQueue; 
        
          import
        
         javax.swing.JDesktopPane; 
        
          import
        
         javax.swing.JFrame; 
        
          import
        
         javax.swing.JInternalFrame; 
        
          import
        
         javax.swing.JLabel; 
        
          import
        
         javax.swing.event.InternalFrameListener; 
        
          public
        
        
          class
        
         DesktopSample { 
        
          /** * @param args */
        
        
          public
        
        
          static
        
        
          void
        
         main(
        
          final
        
         String[] args) { 
        
          // TODO Auto-generated method stub
        
         Runnable runner = 
        
          new
        
         Runnable() { 
        
          public
        
        
          void
        
         run() { String title = (args.length==0 ? "
        
          Desktop Sample
        
        " : args[0]); JFrame frame = 
        
          new
        
         JFrame(title); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JDesktopPane desktop = 
        
          new
        
         JDesktopPane(); JInternalFrame internalFrames[] = { 
        
          new
        
         JInternalFrame("
        
          Can Do All
        
        ", 
        
          true
        
        , 
        
          true
        
        , 
        
          true
        
        , 
        
          true
        
        ), 
        
          new
        
         JInternalFrame("
        
          Not Resizable
        
        ", 
        
          false
        
        , 
        
          true
        
        , 
        
          true
        
        , 
        
          true
        
        ), 
        
          new
        
         JInternalFrame("
        
          Not Closable
        
        ", 
        
          true
        
        , 
        
          false
        
        , 
        
          true
        
        , 
        
          true
        
        ), 
        
          new
        
         JInternalFrame("
        
          Not Maximizable
        
        ", 
        
          true
        
        , 
        
          true
        
        , 
        
          false
        
        , 
        
          true
        
        ), 
        
          new
        
         JInternalFrame("
        
          Not Iconifiable
        
        ", 
        
          true
        
        , 
        
          true
        
        , 
        
          true
        
        , 
        
          false
        
        ) }; InternalFrameListener internalFrameListener = 
        
          new
        
         InternalFrameIconifyListener(); 
        
          int
        
         pos = 0; 
        
          for
        
        (JInternalFrame internalFrame: internalFrames) { 
        
          // Add to desktop
        
         desktop.add(internalFrame); 
        
          // Position and size
        
         internalFrame.setBounds(pos*25, pos*25, 200, 100); pos++; 
        
          // Add listener for iconification events
        
         internalFrame.addInternalFrameListener(internalFrameListener); JLabel label = 
        
          new
        
         JLabel(internalFrame.getTitle(), JLabel.CENTER); internalFrame.add(label, BorderLayout.CENTER); 
        
          // Make visible
        
         internalFrame.setVisible(
        
          true
        
        ); } JInternalFrame palette = 
        
          new
        
         JInternalFrame("
        
          Palette
        
        ", 
        
          true
        
        , 
        
          false
        
        , 
        
          true
        
        , 
        
          false
        
        ); palette.setBounds(350, 150, 100, 100); palette.putClientProperty("
        
          JInternalFrame.isPalette
        
        ", Boolean.TRUE); desktop.add(palette, JDesktopPane.PALETTE_LAYER); palette.setVisible(
        
          true
        
        ); desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); frame.add(desktop, BorderLayout.CENTER); frame.setSize(500, 300); frame.setVisible(
        
          true
        
        ); } }; EventQueue.invokeLater(runner); } }
      

?

DesktopManager接口

使用桌面的最后一部分就是桌面管理器了,他是DesktopManager接口的實現(xiàn),其定義如下:

?

當JInternalFrame位于JDe

        
          public
        
        
          interface
        
         DesktopManager { 
        
          public
        
        
          void
        
         activateFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         beginDraggingFrame(JComponent frame); 
        
          public
        
        
          void
        
         beginResizingFrame(JComponent frame, 
        
          int
        
         direction); 
        
          public
        
        
          void
        
         closeFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         deactivateFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         deiconifyFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         dragFrame(JComponent frame, 
        
          int
        
         newX, 
        
          int
        
         newY); 
        
          public
        
        
          void
        
         endDraggingFrame(JComponent frame); 
        
          public
        
        
          void
        
         endResizingFrame(JComponent frame); 
        
          public
        
        
          void
        
         iconifyFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         maximizeFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         minimizeFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         openFrame(JInternalFrame frame); 
        
          public
        
        
          void
        
         resizeFrame(JComponent frame, 
        
          int
        
         newX, 
        
          int
        
         newY, 
        
          int
        
         newWidth, 
        
          int
        
         newHeight); 
        
          public
        
        
          void
        
         setBoundsForFrame(JComponent frame, 
        
          int
        
         newX, 
        
          int
        
         newY, 
        
          int
        
         newWidth, 
        
          int
        
         newHeight); }
      

?

sktopPane中時,他們不應嘗試例如圖標化或是最大化的操作。相反,他們應該請求他們所安裝在的桌面面板的桌面管理器來執(zhí)行這些操作:

        getDesktopPane().getDesktopManager().iconifyFrame(anInternalFrame);
      

?

DefaultDesktopManager類提供了DesktopManager的一個實現(xiàn)。如果默認實現(xiàn)還足夠,觀感會提供他們自己的DesktopManager實現(xiàn)類,例如Windows觀感的WindowsDesktopManager。我們也可以定義自己的管理器,但是通常并不需要這樣。

8.7 小結

在本章中,我們探討了JRootPane類,以及如何實現(xiàn)依據(jù)JRootPane對內(nèi)部組件進行管理的RootPaneContainer接口。我們同時了解了在Swing中我們?nèi)绾问褂肑Frame, JDialog, JWindow, JApplet或是JInternalFrame類的JRootPane。根面板可以借助JLayeredPane來布局組件,其方式是工具提示文本以及彈出菜單總是顯示在相關聯(lián)組件的上面。

JInternalFrame同時也可以存在于桌面環(huán)境中,在這種情況下,JDesktopPane以及DesktopManager管理如何以及在哪里放置并顯示內(nèi)部窗體。我們還可以通過將InternalFrameListener實現(xiàn)也JInternalFrame關聯(lián)來響應內(nèi)部窗體事件。

在第9章中,我們將會探討Swing庫中的特定彈出組件:JColorChooser, JFileChooser, JOptionPane以及ProgressMonitor

Root Pane Container(四)


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 韩国女主播青草在线观看 | 成人免费大片a毛片 | 在线一区免费视频播放 | 四虎在线观看一区二区 | 波多野结衣亚洲一区二区三区 | 日本在线观看高清不卡免v 国产成人一区二区精品非洲 | 嫩草影院在线入口 | 亚洲精品AV无码喷奶水糖心 | 毛片免费在线观看 | 色噜噜狠狠色综合欧洲selulu | 91网站在线免费观看 | 国产精品一码二码三码在线 | 国产区免费在线观看 | 在线观看av片 | 在线观看国产日韩欧美 | 日日爽天天 | 97理论三级九七午夜在线观看 | 国产在线观看免费 | 浮力国产第一页 | 亚洲高清视频一区二区 | 黄网站入口 | 久草草视频在线观看免费高清 | 国内精品久久久久久中文字幕 | 国产97人人超碰caoprom | 国产欧美视频在线观看 | 亚洲一区中文字幕 | 成人一级黄色 | 超级碰碰碰视频在线观看 | 96久久久久久 | 91精品国产综合久久国产大片 | www.天天色.com | 精品免费国产一区二区三区四区介绍 | 成人福利 | 又黄又爽的网站 | 黄视频网址 | 精品欧美在线 | 欧美精品一区三区 | 欧美日韩在线观看视频 | 亚洲色图综合图片 | 偷拍做爰吃奶视频免费看 | 欧美精品无需播放器在线观看 |