Java jscrollpane无法在swing应用程序中处理jtable

Java jscrollpane无法在swing应用程序中处理jtable,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,我正在使用swing应用程序,因为我使用了jTable和jScrollpane,现在我的问题是在一个滚动窗格中添加了多个表,滚动在另一个表区域上可以正常工作,但当光标在表区域上时它不工作 两个表之间的空间滚动工作正常,但在表区域它不工作。 有人知道我的问题吗?所以请尽快给我答案。。。 提前感谢…有太多复杂的代码,所以我不在这里展示。。。嗯,滚动窗格中包含多个表的面板。复杂的部分在哪里。请参见下面的SSCCE,它正是这样做的 import javax.swing.BoxLayout; import

我正在使用swing应用程序,因为我使用了
jTable
jScrollpane
,现在我的问题是在一个滚动窗格中添加了多个表,滚动在另一个表区域上可以正常工作,但当光标在表区域上时它不工作

两个表之间的空间滚动工作正常,但在表区域它不工作。 有人知道我的问题吗?所以请尽快给我答案。。。 提前感谢…

有太多复杂的代码,所以我不在这里展示。。。嗯,滚动窗格中包含多个表的面板。复杂的部分在哪里。请参见下面的SSCCE,它正是这样做的

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import java.awt.BorderLayout;
import java.awt.EventQueue;

public class TableTest {
  public static void main( String[] args ) {
    EventQueue.invokeLater( new Runnable() {
      @Override
      public void run() {
        JFrame testFrame = new JFrame( "Test" );

        JPanel contentPane = new JPanel( new BorderLayout(  ) );
        JPanel tablePanel = new JPanel(  );
        tablePanel.setLayout( new BoxLayout( tablePanel, BoxLayout.PAGE_AXIS ) );
        addTableToPanel( tablePanel );
        addTableToPanel( tablePanel );
        JScrollPane scrollPane = new JScrollPane( tablePanel );
        contentPane.add( scrollPane );
        testFrame.setContentPane( contentPane );

        testFrame.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
        testFrame.pack();
        testFrame.setVisible( true );
      }
    } );
  }

  private static void addTableToPanel( JPanel aTablePanel ) {
    JTable table = createTable();
    aTablePanel.add( table.getTableHeader() );
    aTablePanel.add( table );
  }

  private static JTable createTable(){
    return new JTable( new DefaultTableModel( new Object[][]{new Object[]{"Data1-1", "Data1-2"}, new Object[]{"Data2-1", "Data2-2"}},
                                                      new Object[]{"Column1", "Column2"}) );
  }
}
请注意,当光标位于表上方时,滚动没有问题。因此,我们需要更多的信息,然后可以在您的问题


如果您创建一个SSCCE(或调整此SSCCE)来重现您的问题,您可能会发现有问题的代码。

我在一个面板中添加了多个表,而没有使用scrollpane,然后将面板添加到scrollpane。这样,我的问题就解决了

您需要添加的滚动窗格,因为没有添加高级组件(滚动窗格),标题不会添加到表中

您可以使用under-give格式添加标题,而无需使用scrollpane

//initializes the table
 JTable table=new JTable(rowData, columnNames);
//add table header to any component(panel)
component.add(table.getTableHeader());
//add table to any component(panel)
component.add(tableRelatedProducts);

更正你的句子以获得答案,你的问题在这个问题上一点也不清楚…你不能在滚动窗格中添加多个组件(又名:它是主视口)-因此你对“工作”的描述不可能是真实的。考虑显示一些示例代码(Struts:SSCCE)来演示您所期望的VS体验,我得到了答案,但问题是如何在不添加表的情况下添加表到JSCROLBOANE中?如果在没有jScrollpane的情况下添加,则不会显示标题。感谢您回复我的代码片段,我在其中手动添加了标题。这一点在本手册中有解释