不应该 overwrite 那个 paint() 方法。
大致应该是这样子:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class SwingTest {
/**
* @param args
*/
public static void main(String[] args) {
JPanel labels = new JPanel(null);
labels.setPreferredSize(new Dimension(400,400));
JScrollPane sp = new JScrollPane(labels, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
JLabel lb = new JLabel("Label 1");
lb.setBounds(20, 20, 200,100);
labels.add(lb);
lb = new JLabel("Label 2");
lb.setBounds(50, 40,200,100);
labels.add(lb);
JFrame f = new JFrame("Multi-Labels");
f.getContentPane().add(sp);
f.pack();
f.setSize(200,200);
f.setVisible(true);
}
}
另外, 除了很特殊的情况,都应该用 layout manager 。