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();
}
} ผลลัพธ์


