我有一个带有两个组件A和B的JSplitPane,但有时我希望能够隐藏B,以便满足以下任一条件:
>组件A和B在JSplitPane中可见
>只有组件A在JSplitPane占用的空间中可见
有没有办法做到这一点?
解决方法
哎呀,我会尝试解决方案……
import java.awt.Dimension; import java.awt.event.*; import javax.swing.*; public class Test { public static void main(String[] args) { JFrame frame = new JFrame(); final JPanel contentPane = (JPanel)frame.getContentPane(); final JButton leftBtn = new JButton("Left Button"); final JButton rightBtn = new JButton("Right Button"); final JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftBtn,rightBtn); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { JButton source = (JButton)e.getSource(); if (jsp.isVisible()) { jsp.remove(rightBtn); jsp.remove(leftBtn); jsp.setVisible(false); contentPane.removeAll(); contentPane.add(source); } else { contentPane.removeAll(); jsp.setLeftComponent(leftBtn); jsp.setRightComponent(rightBtn); jsp.setDividerLocation(0.5); jsp.setVisible(true); contentPane.add(jsp); } contentPane.revalidate(); contentPane.repaint(); source.requestFocusInWindow(); } }; rightBtn.addActionListener(actionListener); leftBtn.addActionListener(actionListener); contentPane.add(jsp); contentPane.setPreferredSize(new Dimension(800,600)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); jsp.setDividerLocation(0.5); frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); } }