Java Swing:如何将多个 JPanel 添加到 JScrollPane

2024-01-18

我在网上读到要将组件添加到 JscrollPane 我们必须执行:

scrollPane.getViewport().setView(jpanel);

嗯,这是我的代码。为了显示多个组件(在本例中为 JButton),我尝试将它们添加到多个 JPanel 中,并在最后按顺序添加这些组件。但只显示最后一个 JPanel。为什么?

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

import layout.TableLayout;

public class Main {

  public static void main(String argv[]) {

      JFrame jframe = new JFrame("Protocollo UTL");
      jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jframe.setSize(1200, 450);

      JPanel body = new JPanel();
      double[][] size = {
            {0.05},
            {0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05}

      };

      body.setLayout(new TableLayout(size));

      for(int i=0; i<19; i++) {
          body.add(new JButton(String.valueOf(i)), "0,"+String.valueOf(i));
      }

      JPanel body2 = new JPanel();
      body2.setLayout(new TableLayout(size));


      for(int j=0; j<6; j++) {
          body2.add(new JButton(String.valueOf(j)), "0,"+String.valueOf(j));
      }

      JScrollPane scrollPane = new JScrollPane(body,
              ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
              ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);

      scrollPane.getViewport().setView(body);
      scrollPane.getViewport().setView(body2);

      jframe.add(scrollPane);
      jframe.setVisible(true);

  }

}

您正在用第二个语句覆盖第一个语句

scrollPane.getViewport().setView(body);
scrollPane.getViewport().setView(body2);

你应该添加两者JPanels 到某个父组件,并将该组件设置为视图。像这样的事情:

Container cont = new Container();
cont.add(body);
cont.add(body2);
scrollPane.getViewport().setView(cont);

EDIT

我认为你不需要那条线(setView(...))根本。试试这个(用这个代替最后四行)

  Container cont = new Container();
  cont.add(scrollPane);
  cont.add(body2);
  cont.setLayout(new GridLayout());

  jframe.add(cont);
  jframe.setVisible(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing:如何将多个 JPanel 添加到 JScrollPane 的相关文章

随机推荐