1. 程式人生 > >JSplitPane中分隔條禁止拖動

JSplitPane中分隔條禁止拖動

轉自:http://blog.csdn.net/sun1956/article/details/8237682

1、禁止分隔條:Java中分割面板是個不錯的應用,可以將一個面板分隔成兩個部分,一部分可以當作選單,另一部分可以當作點選選單項時的響應介面。

JSplitPane中的setDividerLocation(百分比);方法可以隨意的設定自己想要的百分比。但是某些時候我們設定好百分比之後,想要禁止分隔條拖動。

可以採用setEnabled(false)禁止拖動。

2、如果想要讓分隔條隨著視窗大小變化,而保持比例,可以為該視窗新增監聽器,在監聽器裡面重新設定百分比,這樣分隔條就隨著視窗大小變化而變化了。setDividerLocationpublic void setDividerLocation

(double proportionalLocation) 這個方法一定要放在frame.setVisible(true);之後才有效

設定分隔條的位置為 JSplitPane 大小的一個百分比。

根據 setDividerLocation(int) 來實現此方法。此方法以分隔窗格的當前大小為基礎迅速改變窗格的大小。如果分隔窗格沒有正確地實現並且不顯示在螢幕上,此方法將不產生任何影響

3、JSplitPane把面板分隔成兩部分,但這兩部分只能分別新增一個元件,如果想要新增多個元件,要設定一個新的JPanel物件新增進去,再向JPanel中新增元件,這樣就可以新增多個元件了。

測試程式碼:

  1. import java.awt.event.ComponentAdapter;  
  2. import java.awt.event.ComponentEvent;  
  3. import javax.swing.JButton;  
  4. import javax.swing.JFrame;  
  5. import javax.swing.JLabel;  
  6. import javax.swing.JPanel;  
  7. import javax.swing.JRadioButton;  
  8. import javax.swing.JSplitPane;  
  9. publicclass SplitPane extends
     JFrame{  
  10.     /** 
  11.      * @author Sun 
  12.      */
  13.     privatestatic JSplitPane splitPane = new JSplitPane();  
  14.     private JLabel jbtTop = new JLabel("left:");  
  15.     private JLabel jbtBottom = new JLabel("right:");  
  16.     private JPanel panel1,panel2;  
  17.     private JRadioButton jrb1,jrb2;  
  18.     public SplitPane () {  
  19.         jrb1 = new JRadioButton("jrb1");  
  20.         jrb2 = new JRadioButton("jrb2");  
  21.         panel1 = new JPanel();  
  22.         panel2 = new JPanel();  
  23.         splitPane.setTopComponent(panel1);      //新增面板物件,這裡新增元件的方法要注意,不是add
  24.         panel1.add(jbtTop);                     //在面板物件中新增元件
  25.         panel1.add(jrb1);  
  26.         splitPane.setBottomComponent(panel2);  
  27.         panel2.add(jbtBottom);  
  28.         panel2.add(jrb2);  
  29.         splitPane.setOneTouchExpandable(true);      //設定分割面板顯示UI小部件,就是分隔條上的小三角
  30.         add(splitPane);  
  31.         splitPane.setEnabled(false);            //設定分隔條禁止拖動
  32.     }  
  33.     publicstaticvoid main(String[] args) {  
  34.         JFrame frame = new SplitPane();  
  35.         frame.setTitle("SplitPane");  
  36.         frame.setSize(300,200);  
  37.         frame.setLocationRelativeTo(null);  
  38.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  39.         frame.setVisible(true);  
  40.         //為frame視窗新增監聽器,實現保持面板兩部分的比例
  41.         frame.addComponentListener(new ComponentAdapter(){  
  42.             publicvoid componentResized(ComponentEvent e) {  
  43.                     splitPane.setDividerLocation(0.4);}  
  44.         });  
  45.         //這裡是面板第一次顯示的時候,frame沒有事件,所以要設定一次
  46.         splitPane.setDividerLocation(0.4);    //設定分割比,一定要在frame.setVisible(true);之後才有效
  47.     }  
  48. }