【问题标题】:Get the JScrollPane of a JTable获取 JTable 的 JScrollPane
【发布时间】:2014-01-08 12:27:08
【问题描述】:

我有一个 JTable 对象。如何获得对 JTable 所在的 JScrollPane 的引用?

我尝试了 getParent() 但返回 null

编辑:

我的坏。

正如其中一个 cmets 所述,我正在尝试创建我的自定义 JTable,该 JTable 默认具有行标题,而无需手动添加它。问题是添加行标题需要调用scrollPane.setRowHeaderView(rowHeader);。问题是我在构造函数中调用 getParent() 之前表实际上有一个父表并且在调用 jScrollPane1.setViewportView(jTable1); 之前。

所以这不是一步就能解决的,只能事后解决。

【问题讨论】:

  • 我认为 JTable 不包含 JScrollPane(除非您专门将它放在 JScrollPane 中,但是您可以通过其他方式访问它),您能告诉我您想用它做什么JScrollPane?
  • @Duckdoom5 我想创建带有行标题的自定义 JTable。要设置行标题需要调用scrollPane.setRowHeaderView(rowHeader);
  • 编辑后...您的问题是什么?
  • 真的没有,因为我看不出有一种方法可以按照我想要的方式完成。

标签: java swing jtable jscrollpane


【解决方案1】:

我认为这是你需要的:

JScrollPane scrollPane = (JScrollPane)SwingUtilities.getAncestorOfClass(JScrollPane.class, myTable);

您可以找到有关此方法的更多信息here

【讨论】:

  • 我忘记将它转换为 JScrollPane,因为该方法返回一个容器。现在可以了。
  • 问题是滚动窗格不是表的父或祖先。 jScrollPane1.setViewportView(jTable1); 不影响组件层次结构。
  • @Baldus,我知道我必须强制转换它,但仍然没有工作,因为 JTable 不是在 JScrollPane 中创建的
  • 我不知道你是怎么尝试的,但它对我有用。
  • jTable1 = new JTable(); jScrollPane1.setViewportView(jTable1);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 2013-12-17
相关资源
最近更新 更多