Java 如何在JScrollPane中获取组件
我在JScrollPane中有一个JTable;如何获取JTable 谢谢您必须从JViewport中提取JTable,从JScrollPane中提取JViewport 您必须从JViewport中提取JTable,从JScrollPane中提取JViewportJava 如何在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
就其目的而言,是的,不是吗?首先需要查看您的代码片段,然后我们可以讨论:进入调试器,继续探索组件的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();
}
});
}
}