-1

我正在向 a 添加两个JPanel对象(面板包含表格)JSplitPane,由于某种原因该表格不完全可见。我想添加一个屏幕截图以供参考,但堆栈溢出不允许我这样做:(。无论如何,与此相关的代码如下:请提出一些解决方案。

 frame.setTitle(PAGE2);
          final String[] stream_column_names = { "IP Address", "Port", "IP Address", "Port", "Transport" };
          final String[] packet_column_names = { "#", "Direction", "Preview" };
          final JScrollPane pane1 = new JScrollPane();
          final JScrollPane pane2 = new JScrollPane();
          final JLabel label1 = new JLabel();
          final JLabel label2 = new JLabel();

          splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, streamPanel, packetPanel);
          splitPane.setOneTouchExpandable(true);
          splitPane.setDividerLocation(350);


          streamPanel = new JPanel();
          streamPanel.setLayout(new BorderLayout());

          pane1.setLayout(new ScrollPaneLayout());  
          label1.setText("STREAM:");
label1.setVerticalAlignment(SwingConstants.CENTER);
          label1.setHorizontalAlignment(SwingConstants.LEFT);
          streamInfoTable = new JTable();        
          pane1.setViewportView(streamInfoTable);
          streamInfoTable.setModel(streamTableModel);
          streamTableModel.setColumnIdentifiers(stream_column_names);

          streamPanel.add(label1, BorderLayout.NORTH);
          streamPanel.add(pane1);
          streamPanel.getPreferredSize();
          splitPane.add(streamPanel);

          packetPanel = new JPanel();
          packetPanel.setLayout(new BorderLayout());

          pane2.setLayout(new ScrollPaneLayout());

          label2.setText("PACKET:");
          label2.setVerticalAlignment(SwingConstants.CENTER);
          label2.setHorizontalAlignment(SwingConstants.LEFT);

          packetInfoTable = new JTable();

          pane2.setViewportView(packetInfoTable);
          packetInfoTable.setModel(packetTableModel);
          packetInfoTable.setRowSelectionAllowed(false);
          packetInfoTable.setColumnSelectionAllowed(false);
          packetTableModel.setColumnIdentifiers(packet_column_names);

         packetPanel.add(label2, BorderLayout.NORTH);
          packetPanel.add(pane2);
          packetPanel.getPreferredSize();
          splitPane.add(packetPanel);

          centerPanel.add(splitPane);

          frame.add(centerPanel, BorderLayout.CENTER);
          frame.setVisible(true);

          jDesktopPane.add(frame);
4

1 回答 1

3

您的 centerPanel JPanel 看起来正在使用其默认布局,对于 JPanel 是 Fl​​owLayout,这种布局不会调整其显示的内容的大小,因此您可能无法显示包含您的 JTable 的整个 JScrollPane。

考虑给您的 centerPanel 一个 BorderLayout,或者如果它只包含 JSplitPane 而没有其他任何东西,然后将其全部删除,只需将 JSplitPane 添加到框架的 BorderLayout.CENTER 位置。不要忘记pack()在显示之前调用您的 JFrame。

再一次,如果仍然卡住,那么将您的问题提炼为sscce并在此处发布最新代码。

编辑:不知道你为什么要给你的 JScrollPane 一个布局,因为它自己的默认布局应该可以正常工作。

于 2013-07-26T20:27:49.213 回答