各位大虾:
小弟我在JScrollPane里面放置一个带有许多位置不定的label的JPane,设置JPane的layout为null,运行后没有滚动条,在外面的也就没了,而如果不设置为null,所有label就成一直线排列,label的大小也就是它内容的大小,如果超出范围会出现滚动条,难道就不能随意设置JPane里面的label吗???还请各位高手指点,谢谢!!!明天见
以下代码不能显示滚动条,只要把scrollPanel.setLayout(null);注释掉如果内容长度超过可实框就可以显示滚动条,但位置就成一条直线,label大小就只有内容的大小了 JLabel lab1 = new JLabel("1");
lab1.setFont(GlobalInfo.font15);
lab1.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab1.setBorder(labborder);
lab1.setOpaque(true);
lab1.setBounds(0,0,50,600);
JLabel lab2 = new JLabel("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
lab2.setFont(GlobalInfo.font15);
lab2.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab2.setBorder(labborder);
lab2.setOpaque(true);
lab2.setBounds(50,0,300,50);
JLabel lab3 = new JLabel("bbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaa");
lab3.setFont(GlobalInfo.font15);
lab3.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab3.setBorder(labborder);
lab3.setOpaque(true);
lab3.setBounds(350,0,300,50);
JLabel lab4 = new JLabel("ccccccccccccccccccccaaaaaaaaaaaaaa");
lab4.setFont(GlobalInfo.font15);
lab4.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab4.setBorder(labborder);
lab4.setOpaque(true);
lab4.setBounds(650,0,200,50);
JLabel lab5 = new JLabel("ccccccccccccccc ");
lab5.setFont(GlobalInfo.font15);
lab5.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab5.setBorder(labborder);
lab5.setOpaque(true);
lab5.setBounds(850,0,200,50);
JPanel scrollPanel = new JPanel();
scrollPanel.setBackground(GlobalInfo.BACKGROUND_WHITE);
scrollPanel.setLayout(null);
scrollPanel.add(lab1);
scrollPanel.add(lab2);
scrollPanel.add(lab3);
scrollPanel.add(lab4);
scrollPanel.add(lab5);
sp = new JScrollPane();
sp.setBounds(30,160,scmSize.width-60,500);
//sp.getViewport().setLayout(null);
sp.getViewport().add(scrollPanel);
//sp.getViewport().add(lab1);
//sp.getViewport().add(lab2);
//sp.getViewport().add(lab3);
//sp.getViewport().add(lab4);
//sp.getViewport().add(lab5);
//sp.getViewport().setBackground(GlobalInfo.BACKGROUND_WHITE);
//sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
mainPane.add(sp);
小弟我在JScrollPane里面放置一个带有许多位置不定的label的JPane,设置JPane的layout为null,运行后没有滚动条,在外面的也就没了,而如果不设置为null,所有label就成一直线排列,label的大小也就是它内容的大小,如果超出范围会出现滚动条,难道就不能随意设置JPane里面的label吗???还请各位高手指点,谢谢!!!明天见
以下代码不能显示滚动条,只要把scrollPanel.setLayout(null);注释掉如果内容长度超过可实框就可以显示滚动条,但位置就成一条直线,label大小就只有内容的大小了 JLabel lab1 = new JLabel("1");
lab1.setFont(GlobalInfo.font15);
lab1.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab1.setBorder(labborder);
lab1.setOpaque(true);
lab1.setBounds(0,0,50,600);
JLabel lab2 = new JLabel("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
lab2.setFont(GlobalInfo.font15);
lab2.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab2.setBorder(labborder);
lab2.setOpaque(true);
lab2.setBounds(50,0,300,50);
JLabel lab3 = new JLabel("bbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaa");
lab3.setFont(GlobalInfo.font15);
lab3.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab3.setBorder(labborder);
lab3.setOpaque(true);
lab3.setBounds(350,0,300,50);
JLabel lab4 = new JLabel("ccccccccccccccccccccaaaaaaaaaaaaaa");
lab4.setFont(GlobalInfo.font15);
lab4.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab4.setBorder(labborder);
lab4.setOpaque(true);
lab4.setBounds(650,0,200,50);
JLabel lab5 = new JLabel("ccccccccccccccc ");
lab5.setFont(GlobalInfo.font15);
lab5.setBackground(GlobalInfo.BACKGROUND_WHITE);
lab5.setBorder(labborder);
lab5.setOpaque(true);
lab5.setBounds(850,0,200,50);
JPanel scrollPanel = new JPanel();
scrollPanel.setBackground(GlobalInfo.BACKGROUND_WHITE);
scrollPanel.setLayout(null);
scrollPanel.add(lab1);
scrollPanel.add(lab2);
scrollPanel.add(lab3);
scrollPanel.add(lab4);
scrollPanel.add(lab5);
sp = new JScrollPane();
sp.setBounds(30,160,scmSize.width-60,500);
//sp.getViewport().setLayout(null);
sp.getViewport().add(scrollPanel);
//sp.getViewport().add(lab1);
//sp.getViewport().add(lab2);
//sp.getViewport().add(lab3);
//sp.getViewport().add(lab4);
//sp.getViewport().add(lab5);
//sp.getViewport().setBackground(GlobalInfo.BACKGROUND_WHITE);
//sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
mainPane.add(sp);
public Dimension getPreferredSize()
{
Dimension d = new Dimension();
int n = getComponentCount();
for (int i = 0; i < n; i++) {
Component c = getComponent(i);
d.width = Math.max(d.width, c.getX() + c.getWidth());
d.height = Math.max(d.height, c.getY() + c.getHeight());
}
return d;
}
};
p.setLayout(null);p.add(lab1);
lab1.setBounds(xx,xx,xx,xx);...
...JScrollPane sp = JScrollPane(p);