当前位置: 技术问答>java相关
有关JSplitPane的用法,有点想不通,怎么回事?
来源: 互联网 发布时间:2015-11-02
本文导语: 我想用下面的源码实现下面的功能,为什么显示的我想的不一样?请高手指教! treepane在applet的左边,占applet总宽度的30%,img_msgpane在frame的右边,占applet总宽度的70%,它们的高度与applet相同. 另外,img_msgpane里又包括上下imgpa...
我想用下面的源码实现下面的功能,为什么显示的我想的不一样?请高手指教!
treepane在applet的左边,占applet总宽度的30%,img_msgpane在frame的右边,占applet总宽度的70%,它们的高度与applet相同.
另外,img_msgpane里又包括上下imgpane和msgpane,各占高度的一半.
源码如下:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class Applet1 extends JApplet {
public void init() {
JTree tree=new JTree();
JPanel image=new JPanel();
JPanel message=new JPanel();
JScrollPane treepane=new JScrollPane(tree);
JScrollPane imgpane=new JScrollPane(image);
JScrollPane msgpane=new JScrollPane(message);
JSplitPane img_msgpane=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,imgpane,msgpane);
img_msgpane.setOneTouchExpandable(true);
img_msgpane.setDividerSize(2);
img_msgpane.setDividerLocation(0.5);
JSplitPane splitpane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,treepane,img_msgpane);
splitpane.setOneTouchExpandable(true);
splitpane.setDividerSize(2);
splitpane.setDividerLocation(0.3);
getContentPane().add(splitpane);
this.setSize(500,500);
this.show();
}
}
treepane在applet的左边,占applet总宽度的30%,img_msgpane在frame的右边,占applet总宽度的70%,它们的高度与applet相同.
另外,img_msgpane里又包括上下imgpane和msgpane,各占高度的一半.
源码如下:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class Applet1 extends JApplet {
public void init() {
JTree tree=new JTree();
JPanel image=new JPanel();
JPanel message=new JPanel();
JScrollPane treepane=new JScrollPane(tree);
JScrollPane imgpane=new JScrollPane(image);
JScrollPane msgpane=new JScrollPane(message);
JSplitPane img_msgpane=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,imgpane,msgpane);
img_msgpane.setOneTouchExpandable(true);
img_msgpane.setDividerSize(2);
img_msgpane.setDividerLocation(0.5);
JSplitPane splitpane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,treepane,img_msgpane);
splitpane.setOneTouchExpandable(true);
splitpane.setDividerSize(2);
splitpane.setDividerLocation(0.3);
getContentPane().add(splitpane);
this.setSize(500,500);
this.show();
}
}
|
这个问题是JSplitPane的一个Bug,请参阅
http://developer.java.sun.com/developer/bugParade/bugs/4182558.html
一个简单的解决方法是在setDividerLocation(double);之前调用JFrame.validate()。
to dutzzl ():抱歉现在才回复。希望还不算太晚。
一个不好的消息是,SUN将不会修正这个Bug。
http://developer.java.sun.com/developer/bugParade/bugs/4182558.html
一个简单的解决方法是在setDividerLocation(double);之前调用JFrame.validate()。
to dutzzl ():抱歉现在才回复。希望还不算太晚。
一个不好的消息是,SUN将不会修正这个Bug。