我的问题是有一个JSplitPane如下:
class abc extends JFrame{
.....
.....
Spane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, a, b);
        Spane.setDividerSize(8);
        Spane.setDividerLocation(211);
        Spane.setOneTouchExpandable(true);
.....
.....
}
要求是写一个函数把Spane重画,把b换成c其它不变
这是我写的:
public void showBigImage() {  //看大图的模式
       // int k = Spane.getDividerLocation();
        Spane.remove(b);
        Spane.setRightComponent(c);
     //   Spane.setResizeWeight(0.7);
        
       // Spane.setDividerLocation(k);
        Spane.validate();
        getContentPane().repaint();
    }
但原来是看到a和b的,但单击后就只看到a,b c都不见了,还有那条分隔线都不见了

解决方案 »

  1.   

    就像楼上说的 如果你是大型项目 先把该部分隔离出来 单独测试功能的完整性
    理论上来说代码是没有问题 可能有些较隐蔽的细节大家把握地不一样
    或者有些不易察觉的第三方影响要素 先要你完成第一步才能进行下面的判断import java.awt.Color;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSplitPane;public class Test extends JFrame implements MouseListener{
    JSplitPane spane;
    JPanel a, b, c; public static void main(String[] args) {
    new Test().go();
    } public void go() {
    JFrame jf = new JFrame();

    a = new JPanel();
    b = new JPanel();
    c = new JPanel();
    a.setBackground(Color.BLACK);
    b.setBackground(Color.RED);
    c.setBackground(Color.BLUE);
    a.addMouseListener(this);
    spane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, a, b);
    spane.setDividerSize(8);
    spane.setDividerLocation(211);
    spane.setOneTouchExpandable(true);
    jf.add(spane);
    jf.setSize(400, 300);
    jf.setVisible(true);
    } public void showBigImage() { 
    // int k = Spane.getDividerLocation();
    spane.remove(b);
    spane.setRightComponent(c);
    // Spane.setResizeWeight(0.7);
    spane.setDividerSize(8);
    spane.setDividerLocation(211);
    spane.setOneTouchExpandable(true);
    // Spane.setDividerLocation(k);
    spane.validate();
    getContentPane().repaint();
    } public void mouseClicked(MouseEvent e) {
    this.showBigImage();

    } public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    } public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    } public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub

    } public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

    }
    }
    是这个意思吗 有什么区别呢
      

  2.   

    有一种可能就是,你的c是null的情况,会使分隔条被挤压到最右边,只显示a,并且分隔条不能被拖动。