2011-12-05 3 views
1

У меня есть JTable внутри JScrollPane; Как я могу получить JTable?Как получить компонент внутри JScrollPane

Благодаря

+4

По своему объекту, да, нет? Нужно сначала увидеть ваш фрагмент кода, тогда мы сможем поговорить :) – ecle

+0

Перейдите в отладчик и продолжайте исследовать дочернюю переменную компонента, начиная со всех дочерних элементов JScrollPane, потом всех детей этих детей и т. Д., Она обязательно будет там где-то. – LazyCubicleMonkey

+0

Что вы пробовали до сих пор? – Naved

ответ

5
JViewport viewport = scrollPane.getViewport(); 
JTable mytable = (JTable)viewport.getView(); 
+1

рядом: но немного слишком сложно: scrollPane.getViewportView() - общее правило: если есть методы делегата, используйте их :-) – kleopatra

+0

Я не могу найти метод getViewportView() для JScrollPane, поэтому первый ответ похоже правильный. http://docs.oracle.com/javase/8/docs/api/javax/swing/JScrollPane.html – Enwired

1

вы должны извлечь из JTableJViewport и JViewport от JScrollPane

import java.awt.Component; 
import java.awt.Dimension; 
import javax.swing.*; 
import java.util.Arrays; 
import java.util.Vector; 

public class SingleTableTest extends JFrame { 

    private static final long serialVersionUID = 1L; 

    public SingleTableTest() { 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     Vector<Vector<String>> rowData = new Vector<Vector<String>>(); 
     Vector<String> columnName = new Vector<String>(Arrays.asList("Column 1")); 
     for (int i = 0; i < 2000; i++) { 
      rowData.add(new Vector<String>(Arrays.asList(Integer.toString(i)))); 
     } 
     JTable table = new JTable(rowData, columnName); 
     //JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
     JScrollPane scrollPane = new JScrollPane(table); 
     JScrollBar vertical = scrollPane.getVerticalScrollBar(); 
     vertical.setPreferredSize(new Dimension(0, 0)); 
     add(scrollPane); 
     pack(); 
     setVisible(true); 
     JViewport view = scrollPane.getViewport(); 
     Component[] components =view.getComponents(); 
     for (int i1 = 0; i1 < components.length; i1++) { 
      if (components[i1] instanceof JTable) { 
       System.out.println("Hehehehr here is heídden that JTable"); 
      } 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new SingleTableTest(); 
      } 
     }); 
    } 
} 
+0

Хехехер здесь, он сказал, что JTable - LOL! – ecle

Смежные вопросы