jscrollpane没有在swing应用程序中使用jtable

时间:2012-08-13 06:21:23

标签: java swing jtable jscrollpane

我正在研究swing应用程序,因为我使用jTablejScrollpane现在我的问题是我在一个滚动窗格中添加多个表格,滚动在其他表格区域工作正常但是它当光标在表区域时不起作用。

两个表之间的空间滚动工作正常,但在表区域它不起作用。 谁对我的问题有任何想法?所以请快速给我回答...... 提前谢谢......

2 个答案:

答案 0 :(得分:2)

有很复杂的代码,所以我没有在这里显示 ... Euh,一个包含滚动窗格中多个表的面板。复杂的部分在哪里?请参阅下面的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(或调整此版本)可以重现您的问题,您将发现有问题的代码。

答案 1 :(得分:0)

我在一个面板中添加了多个表而没有使用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);