JSplitPane中分隔條禁止拖動
阿新 • • 發佈:2019-01-28
轉自:http://blog.csdn.net/sun1956/article/details/8237682
1、禁止分隔條:Java中分割面板是個不錯的應用,可以將一個面板分隔成兩個部分,一部分可以當作選單,另一部分可以當作點選選單項時的響應介面。
JSplitPane中的setDividerLocation(百分比);方法可以隨意的設定自己想要的百分比。但是某些時候我們設定好百分比之後,想要禁止分隔條拖動。
可以採用setEnabled(false)禁止拖動。
2、如果想要讓分隔條隨著視窗大小變化,而保持比例,可以為該視窗新增監聽器,在監聽器裡面重新設定百分比,這樣分隔條就隨著視窗大小變化而變化了。setDividerLocationpublic void setDividerLocation
設定分隔條的位置為 JSplitPane 大小的一個百分比。
根據 setDividerLocation(int) 來實現此方法。此方法以分隔窗格的當前大小為基礎迅速改變窗格的大小。如果分隔窗格沒有正確地實現並且不顯示在螢幕上,此方法將不產生任何影響
3、JSplitPane把面板分隔成兩部分,但這兩部分只能分別新增一個元件,如果想要新增多個元件,要設定一個新的JPanel物件新增進去,再向JPanel中新增元件,這樣就可以新增多個元件了。
測試程式碼:
- import java.awt.event.ComponentAdapter;
- import java.awt.event.ComponentEvent;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.JRadioButton;
- import javax.swing.JSplitPane;
-
publicclass SplitPane extends
- /**
- * @author Sun
- */
- privatestatic JSplitPane splitPane = new JSplitPane();
- private JLabel jbtTop = new JLabel("left:");
- private JLabel jbtBottom = new JLabel("right:");
- private JPanel panel1,panel2;
- private JRadioButton jrb1,jrb2;
- public SplitPane () {
- jrb1 = new JRadioButton("jrb1");
- jrb2 = new JRadioButton("jrb2");
- panel1 = new JPanel();
- panel2 = new JPanel();
- splitPane.setTopComponent(panel1); //新增面板物件,這裡新增元件的方法要注意,不是add
- panel1.add(jbtTop); //在面板物件中新增元件
- panel1.add(jrb1);
- splitPane.setBottomComponent(panel2);
- panel2.add(jbtBottom);
- panel2.add(jrb2);
- splitPane.setOneTouchExpandable(true); //設定分割面板顯示UI小部件,就是分隔條上的小三角
- add(splitPane);
- splitPane.setEnabled(false); //設定分隔條禁止拖動
- }
- publicstaticvoid main(String[] args) {
- JFrame frame = new SplitPane();
- frame.setTitle("SplitPane");
- frame.setSize(300,200);
- frame.setLocationRelativeTo(null);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- //為frame視窗新增監聽器,實現保持面板兩部分的比例
- frame.addComponentListener(new ComponentAdapter(){
- publicvoid componentResized(ComponentEvent e) {
- splitPane.setDividerLocation(0.4);}
- });
- //這裡是面板第一次顯示的時候,frame沒有事件,所以要設定一次
- splitPane.setDividerLocation(0.4); //設定分割比,一定要在frame.setVisible(true);之後才有效
- }
- }