import javax.swing.*;
import java.awt.Dimension;
import java.awt.FlowLayout;public class LayoutTest extends JFrame {
public LayoutTest() {
setSize(300, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public static void main(String[] args) {
LayoutTest test = new LayoutTest();
JPanel panel = new JPanel(new FlowLayout());
JScrollPane scroll = new JScrollPane(panel);
panel.setPreferredSize(new Dimension(200, 200));
for(int i = 0; i < 1000; i++) {
panel.add(new JLabel("标签 " + i));
}
panel.validate();
panel.repaint();
test.add(scroll);
}
}这里如果我注释掉panel.setPreferredSize(new Dimension(200, 200));的话,滚动条可以出现,不过所有的label都在一行显示,可是我想要label在面板初始大小进行换行,这样的话设定上固定大小,滚动条又不能出现,会导致面板显示区域外的所有内容都不可见。这个问题需要怎么解决,急!!!!!!
import java.awt.Dimension;
import java.awt.FlowLayout;public class LayoutTest extends JFrame {
public LayoutTest() {
setSize(300, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public static void main(String[] args) {
LayoutTest test = new LayoutTest();
JPanel panel = new JPanel(new FlowLayout());
JScrollPane scroll = new JScrollPane(panel);
panel.setPreferredSize(new Dimension(200, 200));
for(int i = 0; i < 1000; i++) {
panel.add(new JLabel("标签 " + i));
}
panel.validate();
panel.repaint();
test.add(scroll);
}
}这里如果我注释掉panel.setPreferredSize(new Dimension(200, 200));的话,滚动条可以出现,不过所有的label都在一行显示,可是我想要label在面板初始大小进行换行,这样的话设定上固定大小,滚动条又不能出现,会导致面板显示区域外的所有内容都不可见。这个问题需要怎么解决,急!!!!!!
test.add(scroll);
这句为什么报错? 你把这句
JScrollPane scroll = new JScrollPane(panel);
放到 test.add(scroll);上面试下
麻烦再问一下你刚运行程序的时候是不是窗体里什么都没有啊
我试了,不可以呀。如果可以的话麻烦你贴下代码。谢谢
import java.awt.Dimension;
import java.awt.FlowLayout;public class LayoutTest extends JFrame {
public LayoutTest() {
setSize(300, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public static void main(String[] args) {
LayoutTest test = new LayoutTest();
JPanel panel = new JPanel();
JScrollPane scroll = new JScrollPane(panel);
panel.setPreferredSize(new Dimension(400, 400));
for(int i = 0; i < 1000; i++) {
panel.add(new JLabel("标签 " + i));
}
panel.validate();
panel.repaint();
test.add(scroll);
}
}
而如果不固定大小,则所有的label又显示回去了。哪么又回到开始的问题上去了。很苦恼啊
可以不设置初始大小,直接panel.pack()。