2013-07-26 4 views
-1

Я добавляю два объекта JPanel (панели содержат таблицы) на JSplitPane, по какой-то причине таблица не полностью видна. Я хотел бы добавить снимок экрана для справки, но переполнение стека не позволит мне сделать это :(Во всяком случае, код связанный с этим следующим образом:.. Просьба предложить какое-то решениеJTable не полностью виден

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); 
+0

Можете ли вы загрузить изображение на сайт обмена изображениями и поделиться им с нами? – JBuenoJr

+1

Опубликуйте свой 'SSCCE', демонстрирующий проблему. Код, который вы опубликовали, не помогает. – camickr

+0

https://docs.google.com/document/d/1a7jEidrqBgQjPDM_JRYB4BwMCZwB91wDMamA1gzjLdE/edit –

ответ

3

Ваш centerPanel JPanel выглядит чтобы использовать его макет по умолчанию, который для JPanel - FlowLayout, макет, который не изменяет размер отображаемого содержимого, и, следовательно, вы рискуете, возможно, не показать всю JScrollPane, которая держит ваш JTable.

Рассмотрите возможность предоставления центра Panel BorderLayout или если он просто держит JSplitPane и ничего больше, а затем избавится от всего этого и просто добавит JSplitPane в позицию BorderLayout.CENTER вашего фрейма. Не забудьте позвонить pack() на вашем JFrame перед его отображением.

И снова, если вы все еще застряли, перепишите свою проблему на sscce и разместите здесь последний код.

Редактировать: не знаете, почему вы даете свой JScrollPane макет, поскольку его собственный макет по умолчанию должен работать нормально.

+0

frame.pack() не решает проблему, центральная панель содержит метку и таблицу. Я попытался удалить центральную панель и добавить компоненты непосредственно, чтобы она не давала должного результата. –

+2

@codelearner: тогда ваш лучший выбор - создать и опубликовать [sscce] (http://sscce.org). Это не ваш полный графический интерфейс/программа, которую немногие захотят увидеть, а скорее минимальная программа, заполненная жестко закодированными данными, которая компилирует, запускает, демонстрирует вашу проблему, но ничего не делает и не имеет кода, не связанного с вашей проблемой , также известный как пример минимального запуска. Создание одного из них потребует усилий, но если ваша проблема досадует, это будет потрачено хорошо. –

+0

Благодарим вас за предложение о настройке рамки для центральной панели. Это сработало :) –