JPanel显示、布局问题

gxgchen 2009-08-12 11:34:57
我想实现的功能是将数据库中的数据读出来(数据个数不定),对应每个数据都有一个相应的JCheckBox,所有的JCheckBox罗列成一竖列,我在jSplitPane的左侧添加了JPanel,在这个JPanel上显示JCheckBox,但是由于数据个数不定,所以有时后JPanel的高度不够,显示不完全,我试过用JScrollBar,但是滚动条添加上了,可是上下拖拽JPanel没反应啊,然后还试过JScrollPane,也没成功……
我用的IDE是netbeans,但是这部分由于数据个数不定我只能想到自己写GUI了,哪位能给点帮助啊,用什么方法解决都行!!!
...全文
875 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxgchen 2009-08-13
  • 打赏
  • 举报
回复
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;


public class T extends JFrame{
private javax.swing.JSplitPane jSplitPane_register;
private JPanel jPanel_left;
private JScrollPane jsp;
private JTextField mNameTf;
public T(){
super();
setSize(100,100);
jSplitPane_register = new JSplitPane();
jPanel_left = new JPanel();
jsp = new JScrollPane();
jSplitPane_register.setDividerLocation(130);
mNameTf = new JTextField();
mNameTf.setSize(85, 20);
jPanel_left.setLayout(null);

JLabel mNameLbl = new JLabel("Mediator名字");
JLabel wNameLbl = new JLabel("Wrapper名字");
mNameLbl.setSize(90, 15);
mNameLbl.setLocation(30, 10);
wNameLbl.setSize(90, 15);
mNameTf.setLocation(30, 35);
wNameLbl.setLocation(30, 60);
jPanel_left.add(mNameLbl);
jPanel_left.add(mNameTf);
jPanel_left.add(wNameLbl);
jPanel_left.validate();
jsp.getViewport().add(jPanel_left);
jSplitPane_register.setLeftComponent(jsp);
setContentPane(jSplitPane_register);
System.out.println(jSplitPane_register.getSize().height);
System.out.println(jSplitPane_register.getDividerLocation());
}
public static void main(String args[]){
new T().setVisible(true);
}
}


这段代码,中JScrollPane 貌似没起作用啊,我就是想问这个
gxgchen 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zl3450341 的回复:]
netbeans  为什么不用MyEclipse呢
[/Quote]
我写的是个类似数据字典管理程序的东西,netbeans和Eclipse?我不想引入这两个IDE到底谁好的争论,我就是用netbeans,没用Eclipse……无语了……
老张-AI 2009-08-13
  • 打赏
  • 举报
回复
netbeans 为什么不用MyEclipse呢
gxgchen 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jjqxt 的回复:]
直接用JScrollPane去包含你的那些JCheckBox 中间不要弄个JPanel就行了
[/Quote]
恩,最后JScrollPane里就剩下一个JCheckBox 了,其他控件全没了
jjqxt 2009-08-13
  • 打赏
  • 举报
回复
直接用JScrollPane去包含你的那些JCheckBox 中间不要弄个JPanel就行了
gxgchen 2009-08-13
  • 打赏
  • 举报
回复
终于碰见你了,哈哈,谢谢楼上,不过Eclipse里面好使了,但是NetBeans中横向的滚动条还是不好使,估计是JScrollPane的容器的问题,呵呵,不管怎么说,多谢了
wangya0902070609 2009-08-13
  • 打赏
  • 举报
回复
你的jPanel_left在加组件时没有设置布局管理器,只要在加组件之前加上 jPanel_left.setLayout(new GridLayout(0, 1));
语句JScrollPane就起作用了……
你去试一试吧
gxgchen 2009-08-12
  • 打赏
  • 举报
回复
JScrollBar jsb;
jPanel_left.setSize(jSplitPane_register.getDividerSize(),jSplitPane_register.getSize().height);
jsb = new JScrollBar(JScrollBar.VERTICAL, 0, 10, 0, jPanel_left.getHeight()-100);
jsb.setBounds(5, 20, 10, jPanel_left.getHeight()-50);
jPanel_left.add(jsb);


这些代码是关于JScrollBar 的啊,滚动条倒是有,但是上下拽不好使,jPanel_left上显示的内容不随着滚动条滚动
  • 打赏
  • 举报
回复
可是上下拖拽JPanel没反应?

滚动条的显示与隐藏:
Quote:

语法:

overflow : visible | auto | hidden | scroll

参数:

visible :  不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
auto :  此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
hidden :  不显示超过对象尺寸的内容
scroll :  总是显示滚动条
gxgchen 2009-08-12
  • 打赏
  • 举报
回复
简单点说吧,就是一个JFrame里面有一个JPanel,但是JPanel的大小比JFrame大,将JPanel add 到JFrame中,因此JPanel中的控件不能一次全部显示到JFrame中,怎么样通过JScrollBar调节JPanel能看到所有控件
lxgandsywy 2009-08-12
  • 打赏
  • 举报
回复
你试试JScrollPane用JScrollPane去包含你要实现滚动的组件

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧