使用JScrollPane时的Java布局



这是我的代码

private static KeyEvent e;
private static String text1 = null;
private static String text = null;
  public fysikdel() {
    super("Fysikformler");
    setSize(700, 502);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    init();
    setResizable(true);
    setVisible(true);
  }
  public void init() {
    JPanel main = new JPanel();
    JPanel p = new JPanel();
    CardLayout c1 = new CardLayout();
    JScrollPane scrollpane = new JScrollPane(p);
    JPanel Mekanik = new JPanel();
    p.setSize(700, 502);
    Mekanik.setLayout(new FlowLayout());
    //637*237
    ImageIcon likformigrorelsei = new ImageIcon();
    JLabel likformigrorelsel = new JLabel();
    ImageIcon lagesenergii = new ImageIcon();
    JLabel lagesenergil = new JLabel();
    ImageIcon a = new ImageIcon();
    JLabel aa = new JLabel();
    ImageIcon b = new ImageIcon();
    JLabel bb = new JLabel();
    try {
        likformigrorelsei = new ImageIcon(new URL("http://i.imgur.com/TZFkXYa.jpg"));
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }
    likformigrorelsel.setIcon(likformigrorelsei);
    try {
        lagesenergii = new ImageIcon(new URL("http://i.imgur.com/TZFkXYa.jpg"));
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }
    lagesenergil.setIcon(lagesenergii);
    try {
        a = new ImageIcon(new URL("http://i.imgur.com/TZFkXYa.jpg"));
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }
    aa.setIcon(a);
    try {
        b = new ImageIcon(new URL("http://i.imgur.com/TZFkXYa.jpg"));
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }
    bb.setIcon(b);
    Mekanik.add(likformigrorelsel);
    Mekanik.add(lagesenergil);
    Mekanik.add(aa);
    Mekanik.add(bb);
    JPanel Tryck = new JPanel();
    main.setLayout(new GridLayout(1,1));
    p.setLayout(c1);
    this.add(main);
    main.add(scrollpane);
    p.add(Mekanik, "1");
    p.add(Tryck, "2");
    c1.show(p, "1");

当我添加更多的图片时,我希望它们从左到右填满,直到填满一行,然后再填满下一行。目前,它只是继续填满第一排。

如果我添加

 scrollpane.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER); 

它只是删除了水平滚动条,但图片仍然在一行上结束。

我不知道怎么了。谢谢你的帮助!

因此,您将所有图像都放在Mekanik面板中,该面板使用FlowLayout。正如java教程所说,

The FlowLayout class puts components in a row, sized at their preferred size

这显然不是你想要的。因此,您必须更改面板使用的布局。

在我看来,GridLayout更适合你的问题。

最新更新