如何在 Java 中以程式設計方式隱藏 JSplitPane 程式的左側/右側面板?


JSplitPane JComponent 類的子類,它允許我們在水平垂直方向上將兩個元件排列在一個窗格中並排顯示。這兩個元件的顯示區域還可以由使用者在執行時進行調整。JSplitPane 的重要方法包括remove()、removeAll()、resetToPreferredSizes()setDividerLocation()。JSplitPane 可以生成 PropertyChangeListener 介面。透過單擊左按鈕右按鈕,我們可以以程式設計方式隱藏其中一個窗格(左或右),並且可以為此類按鈕生成動作偵聽器。

示例

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JSplitPaneHideTest extends JFrame {
   private JButton leftBtn, rightBtn;
   private JSplitPane jsp;
   public JSplitPaneHideTest() {
      setTitle(" JSplitPaneHide Test");
      leftBtn = new JButton("Left Button");
      rightBtn = new JButton("Right Button");
      jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftBtn, rightBtn);
      jsp.setResizeWeight(0.5);
      // Implemention code to hide left pane or right pane
      ActionListener actionListener = new ActionListener() {
         private int loc = 0;
         public void actionPerformed(ActionEvent ae) {
            JButton source = (JButton)ae.getSource();
            if(jsp.getLeftComponent().isVisible() && jsp.getRightComponent().isVisible()) {
               loc = jsp.getDividerLocation();
               jsp.setDividerSize(0);
               jsp.getLeftComponent().setVisible(source == leftBtn);
               jsp.getRightComponent().setVisible(source == rightBtn);
            } else {
               jsp.getLeftComponent().setVisible(true);
               jsp.getRightComponent().setVisible(true);
               jsp.setDividerLocation(loc);
               jsp.setDividerSize((Integer) UIManager.get("SplitPane.dividerSize"));
            }
         }
      };
      rightBtn.addActionListener(actionListener);
      leftBtn.addActionListener(actionListener);
      add(jsp, BorderLayout.CENTER);
      setSize(400, 300);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new JSplitPaneHideTest();
   }
}

輸出





更新時間: 2020-02-10

389 次瀏覽

開啟你的職業生涯

完成課程,獲得認證

開始學習
廣告
© . All rights reserved.