2017-03-28 6 views
0

プロジェクトをJava 8にアップグレードしました。アプリケーションを実行した後、JScrollPaneからのスクロールが表示されません。同じコードがJava 7で動作し、すべてが正常です。Java 7からJava 8へのアップグレード後にJTableを使用したJScrollPaneでスクロールが表示されない

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; 
} 

質問:Java 8では何が変更されましたか?旧バージョンのJavaで同じスクロールがうまくいくのはなぜですか?

編集:

は、たぶん私はあまりにも具体的ではありませんよ。 私は私のプロジェクトをコンパイルするとき、私はそのような何か(ちょうどバー)を参照してください。

enter image description here

それが働いているので、私は私のテーブルをスクロールすることができますが、それは(私はちょうどバーを参照してください)目に見えないのです。

+1

* "table.setPreferredSize(新しい次元(850、Const.rowHeightは)); *" 疑わしい開始 – MadProgrammer

+1

構築物を可能とSwingのGUIは、[イベントディスパッチスレッド](HTTP上で_のみ_オブジェクトを操作します:// docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)。 – trashgod

+0

使用されているL&Fが変更されている可能性があります。 Nimbusはこのような変更を引き起こすのに十分な侵入性を持っています;-) –

答えて

0
  import java.awt.Color; 
      import java.awt.Dimension; 
      import java.awt.GridBagConstraints; 
      import java.awt.GridBagLayout; 
      import java.awt.Insets; 
      import java.awt.LayoutManager; 
      import javax.swing.BorderFactory; 
      import javax.swing.JPanel; 
      import javax.swing.JScrollPane; 
      import javax.swing.JTab 
      import javax.swing.border.EmptyBorder; 



      public class source8 { 




      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((LayoutManager) 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); 
      GridBagLayout gbl_panel = new GridBagLayout();  

      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; 
      } 

      private static void setContentPane(JPanel contentPane) { 
      throw new UnsupportedOperationException("Not supported yet.");     
      //To change body of generated methods, choose Tools | Templates. 
      } 
      } 

コード内のいくつかの変更は、誰もが同じ問題を抱えている場合は、

0

を§§thanksためにそれが動作願っています。 LookAndFeelのデフォルトのScrollBarサイズを追加しています。

UIDefaults defaults = UIManager.getLookAndFeel().getDefaults(); 
defaults.put("ScrollBar.minimumThumbSize", new Dimension(30, 30)); 
関連する問題