自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java圖形界面開發(fā):高級(jí)Swing容器(二)

開發(fā) 后端
在本文中,我們將會(huì)了解一些構(gòu)建在這些布局管理器之上的容器以及其他的一些無需布局管理器的容器。詳細(xì)請(qǐng)看下文

11.3 JTabbedPane類

JTabbedPane類表示曾經(jīng)流行的屬性頁來支持在一個(gè)窗口中多個(gè)容器的輸入或輸出,其中每次只顯示一個(gè)面板。使用JTabbedPane類似于使用CardLayout管理器,所不同的是添加到修改內(nèi)建卡片的支持。然而CardLayout是一個(gè)LayoutManager,而JTabbedPane是一個(gè)完全功能的Container。如果我們不熟悉屬性頁,標(biāo)簽對(duì)話框或是標(biāo)簽面板(所有都是相同的事物的不同名字),圖11-10顯示了一個(gè)JDK 1.2版本所帶的原始SwingSet Demo中的標(biāo)簽集合。


 

為了有助于JTabbedPane管理哪一個(gè)Component被選中,容器的模型是一個(gè)SingleSelectionModel接口的實(shí)現(xiàn),或者更確切的說,是一個(gè)DefaultSingleSelectionModel實(shí)例。(SingleSelectionModel與DefaultSingleSelectionModel在第6章中進(jìn)行了描述。)

11.3.1 創(chuàng)建JTabbedPane

JTabbedPane只有三個(gè)構(gòu)造函數(shù):

  1. public JTabbedPane()   
  2. JTabbedPane tabbedPane = new JTabbedPane();   
  3. public JTabbedPane(int tabPlacement)   
  4. JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.RIGHT);   
  5. public JTabbedPane(int tabPlacement, int tabLayoutPolicy)   
  6. JTabbedPane tabbedPane =   
  7. new JTabbedPane(JTabbedPane.RIGHT, JTabbedPane.SCROLL_TAB_LAYOUT);  

可配置的選項(xiàng)是用來修改顯示哪一個(gè)組件的標(biāo)簽位置與當(dāng)在一個(gè)虛擬行中有多個(gè)標(biāo)簽時(shí)的標(biāo)簽布局策略。默認(rèn)情況下,標(biāo)簽位于容器的頂部,并且標(biāo)簽數(shù)量超過容器寬度時(shí)會(huì)進(jìn)行回環(huán)形成多行。然而,我們可以使用JTabbedPane的下列常量之一來顯式的指定位置:TOP, BOTTOM, LEFT或RIGHT,或者是使用SCROLL_TAB_LAYOUT或WRAP_TAB_LAYOUT來配置布局策略。圖11-11使用其他三個(gè)標(biāo)簽位置顯示了圖11-10的屏幕顯示。圖11-12顯示了帶有滾動(dòng)標(biāo)簽布局的屏幕。

 

11.3.2 添加與移除標(biāo)簽

一旦我們創(chuàng)建了基本的JTabbedPane容器,我們需要添加構(gòu)成JTabbedPane頁的面板。我們可以使用兩種基本方法來添加面板。

如果我們使用JBuilder或是Eclipse的可視化工具來創(chuàng)建我們的界面,用戶界面構(gòu)建器將會(huì)使用我們所熟悉的Container的add()方法來添加Component。所添加的面板使用component.getName()作為默認(rèn)標(biāo)題。然而,如果我們手動(dòng)編程我們不應(yīng)使用各種add()方法。

添加組件或是面板來創(chuàng)建標(biāo)簽更為合適的方法是使用下面列出的addTab()或是insertTab()方法。insertTab()方法中除了組件與位置索引以外,其他的參數(shù)可以為空。(傳遞null作為Component參數(shù)會(huì)在運(yùn)行時(shí)拋出NullPointerException。)顯示的圖標(biāo)與工具提示設(shè)置并沒有默認(rèn)值。

  1. • public void addTab(String title, Component component)   
  2. • public void addTab(String title, Icon icon, Component component)   
  3. • public void addTab(String title, Icon icon, Component component, String tip)   
  4. • public void insertTab(String title, Icon icon, Component component, String tip,   
  5. int index)  

當(dāng)使用addTab()時(shí),標(biāo)簽被添加到末尾,也就是對(duì)于頂部或是底部標(biāo)簽集合來說是最右邊的位置,或是對(duì)于在左邊或右邊放置的標(biāo)簽時(shí)位于底部,依據(jù)組件的方向,也可以是相反的一邊。
在創(chuàng)建面板之后,我們可以通過setXXXAt()方法修改一個(gè)特定標(biāo)簽的標(biāo)題,圖標(biāo),熱鍵,工具提示或是組件:

  1. • public void setTitleAt(int index, String title)   
  2. • public void setIconAt(int index, Icon icon)   
  3. • public void setMnemonicAt(int index, int mnemonic)   
  4. • public void setDisplayedMnemonicIndexAt(int index, int mnemonicIndex)   
  5. • public void setToolTipTextAt(int index, String text)   
  6. • public void setComponentAt(int index, Component component)  

提示,顯示的熱鍵索引指向標(biāo)題中哪一個(gè)字符應(yīng)高亮。例如,如果我們希望title中第二t高亮顯示熱鍵,我們可以使用setMnemonicAt()方法將熱鍵字符設(shè)置為KeyEvent.VK_T,并使用setDisplayedMnemonicIndexAt()將熱鍵索引設(shè)置為2。

另外,我們可以修改一個(gè)特定標(biāo)簽的背景色或前景色,允許或是禁止一個(gè)特定的標(biāo)簽,或是使用setXXXAt()方法設(shè)置不同的禁止圖標(biāo):

  1. • public void setBackgroundAt(int index, Color background)   
  2. • public void setForegroundAt(int index, Color foreground)   
  3. • public void setEnabledAt(int index, boolean enabled)   
  4. • public void setDisabledIconAt(int index, Icon disabledIcon)  

要移除一個(gè)標(biāo)簽,我們可以使用removeTabAt(int index), remove(int index)或是remove(Component component)來移除一個(gè)特定的標(biāo)簽。另外,我們可以使用removeAll()移除所有的標(biāo)簽。

13.3.3 JTabbedPane屬性

表11-4顯示了JTabbedPane的11個(gè)屬性。因?yàn)镴TabbedPane的許多setter/getter方法都指定了一個(gè)索引參數(shù),事實(shí)上他們并不是真正的屬性。

我們可以通過selectedComponent或是selectedIndex屬性來編程修改顯示的標(biāo)簽。

tabRunCount屬性表示顯示所有的標(biāo)簽所必須的行數(shù)(對(duì)于頂部或底部標(biāo)簽位置)或是列數(shù)(對(duì)于左邊或是右邊位置)。

注意,當(dāng)要顯示容器時(shí)修改JTabbedPane的LayoutManager將會(huì)拋出異常。換句話說,不要那樣做。

11.3.4 監(jiān)聽修改標(biāo)簽選中

如果我們對(duì)確定何時(shí)選中的標(biāo)簽變化感興趣,我們需要監(jiān)聽選中模型的變化。這是通過我們將一個(gè)ChangeListener關(guān)聯(lián)到JTabbedPane(或是直接關(guān)聯(lián)到SingleSelectionModel)來實(shí)現(xiàn)的。注冊(cè)的ChangeListener報(bào)告何時(shí)選中模型發(fā)生變化,以及選中的面板變化時(shí)模型的變化。

顯示在列表11-3中的程序演示了監(jiān)聽選中標(biāo)簽的變化并且顯示了新選中標(biāo)簽的標(biāo)題。

  1. package swingstudy.ch11;   
  2.  
  3. import java.awt.BorderLayout;   
  4. import java.awt.Color;   
  5. import java.awt.EventQueue;   
  6. import java.awt.event.KeyEvent;   
  7.  
  8. import javax.swing.JButton;   
  9. import javax.swing.JFrame;   
  10. import javax.swing.JTabbedPane;   
  11. import javax.swing.event.ChangeEvent;   
  12. import javax.swing.event.ChangeListener;   
  13.  
  14. import swingstudy.ch04.DiamondIcon;   
  15.  
  16. public class TabSample {   
  17.  
  18. static Color colors[] = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA};   
  19. static void add(JTabbedPane tabbedPane, String label, int mnemonic) {   
  20. int count = tabbedPane.getTabCount();   
  21. JButton button = new JButton(label);   
  22. button.setBackground(colors[count]);   
  23. tabbedPane.addTab(label, new DiamondIcon(colors[count]), button, label);   
  24. tabbedPane.setMnemonicAt(count, mnemonic);   
  25. }   
  26. /**   
  27. * @param args   
  28. */   
  29. public static void main(String[] args) {   
  30. // TODO Auto-generated method stub   
  31.  
  32. Runnable runner = new Runnable() {   
  33. public void run() {   
  34. JFrame frame = new JFrame("Tabbed Pane Sample");   
  35. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  36.  
  37. JTabbedPane tabbedPane = new JTabbedPane();   
  38. tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);   
  39. String titles[] = {"General""Security""Content""Connection""Programs""Advanced"};   
  40. int mnemonics[] = {KeyEvent.VK_G, KeyEvent.VK_S, KeyEvent.VK_C, KeyEvent.VK_0, KeyEvent.VK_P, KeyEvent.VK_A};   
  41. for(int i=0, n=titles.length; i<n; i++) {   
  42. add(tabbedPane, titles[i], mnemonics[i]);   
  43. }   
  44.  
  45. ChangeListener changeListener = new ChangeListener() {   
  46. public void stateChanged(ChangeEvent event) {   
  47. JTabbedPane sourceTabbedPane = (JTabbedPane)event.getSource();   
  48. int index = sourceTabbedPane.getSelectedIndex();   
  49. System.out.println("Tab changed to: "+sourceTabbedPane.getTitleAt(index));   
  50. }   
  51. };   
  52. tabbedPane.addChangeListener(changeListener);   
  53.  
  54. frame.add(tabbedPane, BorderLayout.CENTER);   
  55. frame.setSize(400150);   
  56. frame.setVisible(true);   
  57. }   
  58. };   
  59. EventQueue.invokeLater(runner);   
  60. }   
  61.  
  62. }   

11.3.5 自定義JTabbedPane觀感

每一個(gè)可安裝的Swing觀感都提供了不同的JTabbedPane外觀以及JTabbedPane組件的默認(rèn)UIResource值集合。圖11-13顯示了JTabbedPane容器在預(yù)安裝的觀感類型Motif,Windows以及Ocean下的外觀。某些項(xiàng)目是特定觀感的:當(dāng)可用的標(biāo)簽集合對(duì)于顯示過度時(shí)JTabbedPane如何顯示,當(dāng)用戶在后一行選擇標(biāo)簽時(shí)如何響應(yīng),如何顯示工具提示,以及如何顯示滾動(dòng)標(biāo)簽布局。

JTabbedPane可用的UIResource相關(guān)的屬性集合顯示在表11-5中。對(duì)于JTabbedPane組件,有34個(gè)不同的屬性。

#p#

 

11.4 JScrollPane類

Swing的JScrollPane容器通過滾動(dòng)支持(如果需要)來使得當(dāng)前部分不可見從而為在較小的顯示區(qū)域內(nèi)顯示大組件提供支持。圖11-4顯示了一個(gè)實(shí)現(xiàn),其中大組件是一個(gè)具有ImageIcon的JLabel。

可以使用兩種方示來標(biāo)識(shí)要滾動(dòng)的組件。我們不需要將要滾動(dòng)的組件直接添加到JScrollPane容器中,我們可以將組件添加到已經(jīng)包含在滾動(dòng)面板中的另一個(gè)組件,JViewport。相對(duì)應(yīng)的,我們可以通過將其傳遞給構(gòu)造函數(shù),在構(gòu)造時(shí)標(biāo)識(shí)組件。

  1. Icon icon = new ImageIcon("dog.jpg");   
  2. JLabel label = new JLabel(icon);   
  3. JScrollPane jScrollPane = new JScrollPane();   
  4. jScrollPane.setViewportView(label);   
  5. // or   
  6. JScrollPane jScrollPane2 = new JScrollPane(label);  

一旦我們將組件添加到JScrollPane中,用戶可以使用滾動(dòng)條來查看在JScrollPane的內(nèi)部區(qū)域不可見的大組件部分。

除了為我們提供了設(shè)置JScrollPane可滾動(dòng)組件的方法,顯示策略可以決定是否以及何時(shí)在JScrollPane周圍顯示滾動(dòng)條。Swing的JScrollPane為水平以及垂直滾動(dòng)條維度了單獨(dú)的顯示策略。

除了使得我們?yōu)闈L動(dòng)添加JViewport以及兩個(gè)JScrollBar組件以外,JScrollPane同時(shí)允許我們提供另外兩個(gè)JViewport對(duì)象用于行與列頭以及在滾動(dòng)面板四個(gè)角中顯示的四個(gè)Component對(duì)象。這些組件的放置是通過在第10章介紹進(jìn)行全面描述的ScrollPaneLayout管理器來管理的。JScrollPane實(shí)現(xiàn)所用的JScrollBar組件是一個(gè)名為JScrollPane.ScrollBar的JScrollBar子類。他們被用來替換通常的JScrollBar,從而在組件實(shí)現(xiàn)了Scrollable接口時(shí)正確處理JViewport中的滾動(dòng)組件。

為了幫助我們理解這些組件如何放置在JScrollPane中,圖11-15演示了ScrollPaneLayout如何放置各種對(duì)象。

注意,JScrollPane組件只支持輕量級(jí)組件的滾動(dòng)。我們不應(yīng)該向容器添加通常的,重量級(jí)AWT組件。

11.4.1 創(chuàng)建JScrollPane

JScrollPane有四個(gè)構(gòu)造函數(shù):

  1. public JScrollPane()   
  2. JScrollPane scrollPane = new JScrollPane();   
  3. public JScrollPane(Component view)   
  4. Icon icon = new ImageIcon("largeImage.jpg");   
  5. JLabel imageLabel = new JLabel(icon);   
  6. JScrollPane scrollPane = new JScrollPane(imageLabel);   
  7. public JScrollPane(int verticalScrollBarPolicy, int horizontalScrollBarPolicy)   
  8. JScrollPane scrollPane = new   
  9. JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,   
  10. JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);   
  11. public JScrollPane(Component view, int verticalScrollBarPolicy,   
  12. int horizontalScrollBarPolicy)   
  13. JScrollPane scrollPane = new JScrollPane(imageLabel,   
  14. JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,   
  15. JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);  

這些構(gòu)造函數(shù)提供了預(yù)安裝滾動(dòng)組件以及配置單獨(dú)滾動(dòng)條滾動(dòng)策略的選項(xiàng)。默認(rèn)情況下,滾動(dòng)條只在需要的時(shí)候顯示。表11-16顯示了用來為每一個(gè)滾動(dòng)條顯示設(shè)置策略的JScrollPane常量。使用其他不正確的設(shè)置會(huì)導(dǎo)致拋出IllegalArgumentException。

下面的章節(jié)將會(huì)解釋如何在創(chuàng)建JScrollPane之后添加或修改組件。

11.4.2 修改Viewport View

如果我們使用合適的組件創(chuàng)建JScrollPane,我們只需要添加JScrollPane來顯示。然而,如果我們并沒有在創(chuàng)建時(shí)關(guān)聯(lián)組件,或者是希望在稍后進(jìn)行修改,有兩種方法可以為滾動(dòng)關(guān)聯(lián)一個(gè)新的組件。首先,我們可以通過設(shè)置viewportView屬性直接修改組件:

  1. scrollPane.setViewportView(dogLabel);  

修改滾動(dòng)組件另一種方法就是將JViewport放在JScrollPane的中間,然后修改其view屬性:

  1. scrollPane.getViewport().setView(dogLabel);  

我們將會(huì)在本章稍后的“JViewport類”一節(jié)中了解到更多關(guān)于JViewport組件的內(nèi)容。

11.4.3 Scrollable接口

不同于AWT組件,例如List會(huì)在一次顯示的選項(xiàng)過多時(shí)自動(dòng)提供可滾動(dòng)區(qū)域,Swing組件JList,JTable,JTextComponent,以及JTree并不會(huì)自動(dòng)提供滾動(dòng)支持。我們必須創(chuàng)建組件,將其添加到JScrollPane,然后將滾動(dòng)面板添加到屏幕。

  1. JList list = new JList(...);   
  2. JScrollPane scrollPane = new JScrollPane(list);   
  3. aFrame.add(scrollPane, BorderLayout.CENTER);  

將組件添加到JScrollPane起作用的原因在于每一個(gè)也許對(duì)于屏幕過大的Swing組件(并且需要滾動(dòng)支持)實(shí)現(xiàn)了Scrollable接口。通過實(shí)現(xiàn)這個(gè)接口,當(dāng)我們移動(dòng)與JScrollPane相關(guān)聯(lián)的滾動(dòng)條時(shí),JScrollPane會(huì)查詢?nèi)萜鲀?nèi)Scrollable組件的尺寸信息從而基于當(dāng)前的滾動(dòng)條位置正確的定位組件。

我們唯一需要擔(dān)心Scrollable接口的時(shí)機(jī)就是當(dāng)我們創(chuàng)建一個(gè)需要滾動(dòng)支持的自定義組件的時(shí)候。下面是Scrollable接口的定義。

  1. public interface Scrollable {   
  2. public Dimension getPreferredScrollableViewportSize();   
  3. public boolean getScrollableTracksViewportHeight();   
  4. public boolean getScrollableTracksViewportWidth();   
  5. public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation,   
  6. int direction);   
  7. public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation,   
  8. int direction);   
  9. }  

如果我們創(chuàng)建一個(gè)自定義的Scrollable組件,然后將放在JScrollPane中,當(dāng)JScrollPane的滾動(dòng)條或是鼠標(biāo)滾輪移動(dòng)時(shí),他就會(huì)正確的響應(yīng)。

11.4.4 JScrollPane屬性

表11-7顯示了JScrollPane的19個(gè)屬性。

 

嘗試著JScrollPane的布局屬性修改為除了ScrollPaneLayout以外的值或是null將會(huì)在運(yùn)行時(shí)拋出ClassCastException,因?yàn)镴ScrollPane所用的布局管理器必須為ScrollPaneLayout。

使用ScrollPaneLayout JScrollPane依賴ScrollPaneLayout管理器對(duì)容器內(nèi)的組件進(jìn)行放置。然而大多數(shù)的布局管理器被設(shè)置用來布局所有的組件類型,但是ScrollPaneLayout的四個(gè)區(qū)域只接受特定類型的組件。表11-8顯示了可以放置在圖11-15中所示區(qū)域中顯示的組件類型。

注意,區(qū)域角有兩個(gè)常量集合。對(duì)于國(guó)際化支持,我們可以使用LOWER_LEADING_CORNER, LOWER_TRAILING_CORNER, UPPER_LEADING_CORNER與UPPER_TRAILING_CORNER,這些常量可以為我們處理組件方向。對(duì)于由左到右的組件方向,起始是左邊,而結(jié)束是右邊。

正如設(shè)計(jì)要求,布局管理器描述支持對(duì)于可用空間過大的主內(nèi)容區(qū)域(VIEWPORT)所必須的屏幕布局。用于在區(qū)域中瀏覽的滾動(dòng)條可以被設(shè)置在內(nèi)容區(qū)域的右邊(VERTICAL_SCROLLABAR)或是下邊(HORIZONTAL_SCROLLBAR)。不滾動(dòng)的固定頭可以被放置在內(nèi)容區(qū)域的上部(COLUMN_HEADER)或是其左邊(ROW_HEADER)。四個(gè)角(*_CORNER)可以配置來顯示任意的組件類型,通常是帶有圖片的標(biāo)簽;然則 ,在其中可以放置任意的組件。

注意,一些開發(fā)者會(huì)認(rèn)為ScrollPaneLayout是一個(gè)帶有自定義約束的GridBagLayout。在通常情況下,大多數(shù)開發(fā)者并不會(huì)在JScrollPane之外使用ScrollPaneLayout。

使用JScrollPane頭與角

如圖11-15與表11-8所示,在JScrollPane存在多個(gè)不同的區(qū)域。通常,我們只使用中間的視圖,并使用兩個(gè)滾動(dòng)條完成相應(yīng)的任務(wù)。另外,當(dāng)使用JTable組件時(shí),當(dāng)放置在JScrollPane中時(shí),表會(huì)自動(dòng)將列頭放置在列頭區(qū)域。

我們也可以手動(dòng)添加或是修改JScrollPane的列頭或是行頭。盡管我們可以在這里區(qū)域完全替換JViewport,但是為此區(qū)域中的Component設(shè)置columnHeaderView或是rowHeaderView屬性更為簡(jiǎn)單。這一操作可以為我們將組件放置在JViewport中。

要將組件放置在JScrollPane的一個(gè)角中,我們需要調(diào)用setCorner(String key, Component corner)方法,其中key是JScrollPane中的下列常量之一:LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, UPPER_LEFT_CORNER,或是UPPER_RIGHT_CORNER。

角區(qū)域的使用比較有技巧。只有當(dāng)兩個(gè)位于角落右邊角的組件是當(dāng)前顯示時(shí),角落組件才會(huì)被顯示。例如,假如我們要在右下角落放置一個(gè)具有公司logo的標(biāo)簽,而兩個(gè)滾動(dòng)條的滾動(dòng)策略只有在必需的時(shí)才會(huì)顯示。在這種情況下,如果一個(gè)滾動(dòng)條不需要,角落中的logo也不會(huì)被顯示。作為另一個(gè)盒子,如果一個(gè)JScrollPane具有一個(gè)列頭顯示,但是并沒有行頭,左上角中的組件也不會(huì)被顯示。

所以,僅僅因?yàn)槲覀儗⒔锹湓O(shè)置為一個(gè)組件(例如scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, logLabel)),不要期望組件總是或是自動(dòng)顯示。而且,如圖11-16所示,相鄰的區(qū)域控制角落的尺寸。不要認(rèn)為角落組件會(huì)按需要大小顯示。這是因?yàn)槠渥钚〕叽纾顑?yōu)尺寸與最大尺寸被完全被忽略了。在圖11-16中,用來創(chuàng)建角落組件的實(shí)際圖片要大于所用的空間。

注意,修改JScrollPane的一個(gè)角落類似于邊界屬性,其中屬性名是表11-8中所列的角落鍵值。

重設(shè)視圖域位置

有時(shí),我們也許會(huì)希望將內(nèi)部視圖的內(nèi)容向JScrollPane的左上角移動(dòng)。這種變化也許是需要的,因?yàn)橐晥D發(fā)生了變化,或者是某些事情的發(fā)生要求視圖域組件返回到JScrollPane的原始位置。移動(dòng)視圖最簡(jiǎn)單的方法就是JScrollPane的滾動(dòng)條位置。將每一個(gè)滾動(dòng)條設(shè)置為其最小值就有效的將組件視圖移動(dòng)到了組件的左上角區(qū)域。列表11-4中所顯示的ActionListener可以關(guān)聯(lián)到屏幕中的按鈕或是JScrollPane的角落,從而使得JScrollPane的內(nèi)容返回到原始位置。

  1. package swingstudy.ch11;  
  2.    
  3. import java.awt.event.ActionEvent;  
  4. import java.awt.event.ActionListener;  
  5.    
  6. import javax.swing.JScrollBar;  
  7. import javax.swing.JScrollPane;  
  8.    
  9. public class JScrollPaneToTopAction implements ActionListener {  
  10.    
  11.     JScrollPane scrollPane;  
  12.    
  13.     public JScrollPaneToTopAction(JScrollPane scrollPane) {  
  14.         if(scrollPane == null) {  
  15.             throw new IllegalArgumentException("JScrollPaneToTopAction: null JScrollPane");  
  16.         }  
  17.         this.scrollPane = scrollPane;  
  18.     }  
  19.     @Override 
  20.     public void actionPerformed(ActionEvent event) {  
  21.         // TODO Auto-generated method stub  
  22.         JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar();  
  23.         JScrollBar horizontalScrollBar = scrollPane.getHorizontalScrollBar();  
  24.         verticalScrollBar.setValue(verticalScrollBar.getMinimum());  
  25.         horizontalScrollBar.setValue(horizontalScrollBar.getMinimum());  
  26.     }  
  27.    

11.4.5 自定義JScrollPane觀感

每一個(gè)可安裝的觀感都提供了不同的JScrollPane外觀以及默認(rèn)的組件UIResource值集合。圖11-17顯示了JScrollPane組件在預(yù)安裝的觀感類型集合下的外觀顯示。對(duì)于JScrollPane,觀感類型之間的主要區(qū)別與滾動(dòng)條的外觀以及視圖周圍的邊框有關(guān)。

表11-9顯示了JScrollPane可用的UIResource相關(guān)屬性集合。對(duì)于JScrollPane組件,有十個(gè)不同的屬性。當(dāng)滾動(dòng)條在JScrollPane內(nèi)可見時(shí),修改與JScrollBar的相關(guān)屬性會(huì)影響其外觀。

原文鏈接:http://blog.csdn.net/mylxiaoyi/article/details/7487167

責(zé)任編輯:林師授 來源: mylxiaoyi的博客
相關(guān)推薦

2012-04-28 10:25:11

JavaSwing

2012-04-24 09:40:42

SwingJava

2011-07-28 17:40:04

MySQLMySQL Workb

2012-01-16 11:03:09

javaswing

2010-11-25 09:05:53

MonoDevelop

2009-05-26 15:22:14

Linux圖形備份

2011-02-22 18:09:08

2011-10-11 13:22:55

FreeBSD

2016-10-28 08:57:56

Git圖形界面

2010-03-03 17:50:45

Android圖形界面

2009-09-10 10:02:18

VxWorksLinux圖形界面Linux

2021-11-08 08:14:50

Python圖形界面框架

2011-09-06 15:10:20

Ubuntu圖形界面

2021-02-04 11:08:00

LinuxSSH工具

2010-01-07 10:04:49

Ubuntu圖形

2024-12-23 14:54:47

2012-04-19 13:21:02

Javaswing

2009-03-06 15:12:24

LinuxUbuntuPrefixSuffi

2009-10-13 14:44:02

圖形界面linuxunix

2019-02-21 19:00:49

LinuxSSH圖形界面工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)