A JSplitPane เป็นคลาสย่อยของ JComponent คลาสที่ช่วยให้เราสามารถจัดองค์ประกอบสองส่วนเคียงข้างกัน ในแนวนอน หรือ แนวตั้ง ในบานหน้าต่างเดียว พื้นที่แสดงผลของส่วนประกอบทั้งสองยังสามารถปรับเปลี่ยนได้ที่รันไทม์โดยผู้ใช้ วิธีการที่สำคัญของ JSplitPane คือ remove(), removeAll(), resetToPreferredSizes() และ setDividerLocation() . JSplitPane สามารถสร้าง PropertyChangeListener อินเตอร์เฟซ. เราสามารถซ่อนบานหน้าต่างบานใดบานหนึ่งได้ (ซ้ายหรือขวา ) โดยทางโปรแกรมโดยคลิกที่ปุ่มซ้าย หรือ ปุ่มขวา และสามารถสร้าง action listener สำหรับปุ่มเหล่านั้นได้
ตัวอย่าง
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(); } }
ผลลัพธ์