我用那个JSplitPane,设置垂直方向分割,那分割条总是躲在一边,而且不能调整大小,这是什么原因
代码如下:import javax.swing.*;public class Split extends JFrame{
JSplitPane sp1;
public Split(){
sp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
this.add(sp1);

//设置框架属性
this.setBounds(300,200,300,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
new Split();
}
}
 

解决方案 »

  1.   

    final JSplitPane splitPane = ...;
    SwingUtilities.invokeLater(new Runnable(){
        public void run(){
            splitPane.setDividerLocation(.5);
        }
    });
      

  2.   

    JSplitPane分割条在JSplitPane显示后才可以设置位置。invokeLater就是把setDividerLocation丢到EDT里。
      

  3.   

    spltpn.setDividerLocation(80);
    spltpn.setOneTouchExpandable(true);
    spltpn.setContinuousLayout(true);
      

  4.   

    问题在你 new JSplitPane 那行上。
    import javax.swing.*;
    public class Split extends JFrame {
        JSplitPane sp1; 
        public Split() {
    sp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,new JScrollPane(new JTextArea()),new JScrollPane(new JTextArea())); 
    java.awt.EventQueue.invokeLater(new Runnable(){
    public void run(){
        sp1.setDividerLocation(100);
    }
        });
    this.add(sp1);
    //设置框架属性  
    this.setBounds(300,200,300,200);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setVisible(true);
        }
        public static void main(String[] args){
    java.awt.EventQueue.invokeLater(new Runnable(){
    public void run(){
        new Split(); 
    }
        });
        } 
    }
      

  5.   

    还可以这样写
    import java.awt.BorderLayout;
    import java.awt.event.ComponentAdapter;
    import java.awt.event.ComponentEvent;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSplitPane;
    import javax.swing.JTextArea;public class Test {
    public static void main(String[] args) {
    JFrame frame = new JFrame();

    final JSplitPane splitPane = new JSplitPane();
    splitPane.add(new CustomPanel(), JSplitPane.LEFT);
    splitPane.add(new CustomPanel(), JSplitPane.RIGHT);
    splitPane.addComponentListener(new ComponentAdapter() {
    @Override
    public void componentResized(ComponentEvent e) {
    splitPane.setDividerLocation(1.0 / 3.0);
    }
    });
    frame.add(splitPane);

    frame.setTitle("Hello JSplitPane");
    frame.setSize(300, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    }class CustomPanel extends JPanel {
    private static int id = 0;

    public CustomPanel() {
    super(new BorderLayout());
    add(new JTextArea("" + id++), BorderLayout.CENTER);
    }
    }