这是我的第一次发布,所以我不是很了解发布过程以及文档编辑,若有表示不明或排版错误,十分抱歉。
我但是遇到的状况是:我在滚动面板(JScrollPane)中添加了若干按钮,初次错误是–按钮只有在鼠标接触时才会出现,原因不知道,解决办法是:向滚动面板中添加一个普通面板JPanel,然后将组件加入到滚动面板中,这样就可以将有限个组件显示出来,之所以说是“有限个”,是因为现在的结果是这样:
可以看到组件只是显示出来了部分,根本无法实现滚动,多余的组件像是被吞了。
目前的代码:JPanel view=new JPanel(); //普通面板 view.setBounds(0, 0, 140, 2000); //将要插入到滚动面板中,定义位置及大小 view.setLayout(null); int y=0,x=5,i=0; for(;i<=20;i++) { JButton button_link=new JButton(); button_link.setBackground(Color.red); button_link.setText("连接按钮"+i); view.add(button_link); button_link.setBounds(0, y, 150, 50); y=y+50;//x=x+10; button_link.setVisible(true); } //侧边导航栏 //JScrollPane jscrollpane=new JScrollPane(view); JScrollPane jscrollpane=new JScrollPane(); //jscrollpane.setViewportView(view); container.add(jscrollpane); jscrollpane.setBounds(80, 90, 140, 600); jscrollpane.setPreferredSize(new Dimension(468,450)); jscrollpane.setViewportView(view); jscrollpane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );
(第一次插入代码,我看到的是乱序,不知道发布后看到的怎样)值得一提的是如果将view.setLayout(null);
改成view.setLayout(new GridLayout(21,0,10,10));
。则会成功显示滚动,但那是针对于特定布局格式的排布,我想要的是各个组件都自定义个性化。
那么就要在改进了,经过我找了很多网站,到处找,终于在百度上遥远的角落里找到了答案。我将JPanel插入到JScrollPane,在JPanel中插入组件,但我少了一个设置view.setPreferredSize(new Dimension(140,2000));
这是对普通面板的设置。据api帮助文档所说,这是设置首选大小。我的猜测是,只设置大小的话,加入到面板中后,JPanel的大小会被重置,重置为适应父级面板的大小。所以声明一个优先级更高的大小。使面板的大小不被重置。
结果为:
我也是初学的Java,这个问题还是在于学艺不精。我还是有很多不明白。若有高手,还望指教。对了另外,滚动面板内部组件的的大小若是小于滚动面板的大小,则无法实现滚动。
Java在滚动面板中添加若干按钮或其他组件却无法实现滚动
最新推荐文章于 2024-04-18 04:30:46 发布