Java 如何在JScrollPane中获取组件

Java 如何在JScrollPane中获取组件,java,swing,user-interface,jtable,jscrollpane,Java,Swing,User Interface,Jtable,Jscrollpane,我在JScrollPane中有一个JTable;如何获取JTable 谢谢您必须从JViewport中提取JTable,从JScrollPane中提取JViewport 您必须从JViewport中提取JTable,从JScrollPane中提取JViewport 就其目的而言,是的,不是吗?首先需要查看您的代码片段,然后我们可以讨论:进入调试器,继续探索组件的children变量,首先是JScrollPane的所有子变量,然后是这些子变量的所有子变量,等等,它肯定在某个地方。假设1 JTabl

我在JScrollPane中有一个JTable;如何获取JTable

谢谢

您必须从JViewport中提取JTable,从JScrollPane中提取JViewport

您必须从JViewport中提取JTable,从JScrollPane中提取JViewport


就其目的而言,是的,不是吗?首先需要查看您的代码片段,然后我们可以讨论:进入调试器,继续探索组件的children变量,首先是JScrollPane的所有子变量,然后是这些子变量的所有子变量,等等,它肯定在某个地方。假设1 JTable在JScrollPane中,因为您的代码创建了它并将它放在那里。在创建JTable时保留对它的引用。1为了更快地获得更好的帮助,请发布一个我尝试过的@SSCCE:JTableJViewportJScrollPanem_Tabs.getcomponentidx.getComponent0.getView,它可以正常工作。谢谢你,伙计,是的,不是吗?首先需要查看您的代码片段,然后我们可以讨论:进入调试器,继续探索组件的children变量,首先是JScrollPane的所有子变量,然后是这些子变量的所有子变量,等等,它肯定在某个地方。假设1 JTable在JScrollPane中,因为您的代码创建了它并将它放在那里。在创建JTable时保留对它的引用。1为了更快地获得更好的帮助,请发布一个我尝试过的@SSCCE:JTableJViewportJScrollPanem_Tabs.getcomponentidx.getComponent0.getView,它可以正常工作。谢谢你,Guyshehehr,这是他给你的JTable-LOL!呵呵,呵呵,这就是他对那张桌子的喜爱——哈哈!near:但有点太复杂:scrollPane.getViewportView-一般规则是:如果有委托方法,一定要使用它们:-我找不到用于JScrollPane的方法getViewportView,所以第一个答案似乎是正确的。near:但有点太复杂:scrollPane.getViewportView-一般规则是:如果有委托方法,一定要使用它们:-我找不到用于JScrollPane的方法getViewportView,所以第一个答案似乎是正确的。
JViewport viewport = scrollPane.getViewport(); 
JTable mytable = (JTable)viewport.getView();
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();
            }
        });
    }
}