返回信息流一个Panel上画了一条斜线,加了一个滚动条,现在无法滚动,代码如下:
import java.awt.*;
import javax.swing.*;
public class TestJScrollPane {
public static void main(String[] args) {
JFrame jf = new JFrame("BorderLayout");
jf.setBounds(0, 0, 500, 500);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jf.setResizable(false);
TestPanel jp = new TestPanel();
JScrollPane jsp = new JScrollPane(
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
jsp.setViewportView(jp);
jsp.setPreferredSize(new Dimension(1080,1080));
jp.revalidate();
jf.add(jsp,BorderLayout.CENTER);
}
}
class TestPanel extends JPanel{
TestPanel() {
this.setLayout(null);
}
public void paint(Graphics arg0) {
super.paint(arg0);
arg0.drawLine(300,0 , 1000, 1000);
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #30152同步于 2014/5/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【求助】滚动条无法滚动
lzj0218
2014/5/26镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
没有java写过界面,不过我猜想,因为你的Panel只画线,不影响布局,所以在ScrollPane看来,你的panel大小不需要scroll。所以,如果JPanel有计算布局大小之类的方法需要重载,估计需要重载一下
你这是不是用的setviewportview,这个API好像说的是不直接提供滚动组件子级,要不这样尝试下JScrollPane jsp= new JScrollPane(jp,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//滚动条必然出现
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jf.add(jsp)