不';将Java 7升级到Java 8后,在JScrollPane中使用JTable不显示滚动

不';将Java 7升级到Java 8后,在JScrollPane中使用JTable不显示滚动,java,swing,java-8,jtable,jscrollpane,Java,Swing,Java 8,Jtable,Jscrollpane,我必须把这个项目升级到Java8。在运行我的应用程序后,不会显示从JScrollPane滚动。同样的代码在Java7中工作,一切都正常 public static void main(String[] a){ JPanel contentPane = new JPanel(); contentPane.setBackground(Color.WHITE); contentPane.setBorder(new EmptyBorder(0, 0, 0, 0)); co

我必须把这个项目升级到Java8。在运行我的应用程序后,不会显示从JScrollPane滚动。同样的代码在Java7中工作,一切都正常

public static void main(String[] a){
    JPanel contentPane = new JPanel();
    contentPane.setBackground(Color.WHITE);
    contentPane.setBorder(new EmptyBorder(0, 0, 0, 0));
    contentPane.setLayout(new javax.swing.BoxLayout(contentPane, javax.swing.BoxLayout.Y_AXIS));

    JPanel aggregates = new JPanel("Aggregates", new Insets(40, 0, 0, 0));
    GridBagConstraints gbc_aggregates = new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, 1, new Insets(10, 10, 10, 10), 0, 0);
    gbl_panel.setConstraints(aggregates, gbc_aggregates);

    GridBagLayout gbl_agregats = new GridBagLayout();   
    addParametersLayout(gbl_agregats, new int[]{0,0,0}, new int[]{0, 0},new double[]{ 0.0, 0.0, Double.MIN_VALUE}, new double[]{0.0, Double.MIN_VALUE} );
    aggregates.setLayout(gbl_agregats);

    JTable table = new JTable(new MyTableModel(null));
    table.setPreferredSize(new Dimension(850, Const.rowHeight));

    JScrollPane scrollPane = new JScrollPane(table);
    table.setPreferredScrollableViewportSize(new Dimension(850, 10 *Const.rowHeight));
    GridBagConstraints gbc_scrollPane= new GridBagConstraints(0, 1, 3, 1, 0.0, 0.0, GridBagConstraints.WEST, 1, new Insets(5, 5, 20, 5), 0, 0);
    gbl_agregats.setConstraints(scrollPane, gbc_scrollPane);
    aggregates.add(scrollPane);

    JPanel main_panel = new JPanel();
    main_panel.add(aggregates); 

    JScrollPane scrPane = new JScrollPane(main_panel);
    scrPane.getVerticalScrollBar().setUnitIncrement(16);
    scrPane.setBorder(BorderFactory.createEmptyBorder());
    scrPane.getInsets().set(0, 0, 0, 0);
    contentPane.add(scrPane);
    setContentPane(contentPane);    
}

public static void addParametersLayout(GridBagLayout gbl,
int[] columnWidths, int[] rowHeights, double[] columnWeights,
double[] rowWeights) {
    gbl.columnWidths = columnWidths;
    gbl.rowHeights = rowHeights;
    gbl.columnWeights = columnWeights;
    gbl.rowWeights = rowWeights;
}
问题:Java8中发生了什么变化?为什么相同的卷轴在较旧的Java版本中看起来正常?

编辑:

也许我不太具体。 当我编译我的项目时,我会看到类似的情况(只需bar):

我可以滚动我的表格,因为它正在工作,但它是不可见的(我只看到一个条)


代码中的一些更改希望对您有用§§谢谢

如果有人有同样的问题。我为我的LookAndFeel添加了默认的滚动条大小,它可以正常工作

UIDefaults defaults = UIManager.getLookAndFeel().getDefaults();
defaults.put("ScrollBar.minimumThumbSize", new Dimension(30, 30));

“table.setPreferredSize(新维度(850,Const.rowHeight));”将是一个有问题的开始,仅在上构造和操作Swing GUI对象。所使用的L&F可能已更改。Nimbus的侵入性足以触发此类变化;-)
UIDefaults defaults = UIManager.getLookAndFeel().getDefaults();
defaults.put("ScrollBar.minimumThumbSize", new Dimension(30, 30));