2015-06-26 106 views
5

在Java 5中我的揮杆應用程序,它有一個顯示像Swing佈局問題到Java 8

this

遷移到Java 8之後,放大並只顯示一個類似 this

的一部分

我看到this,並嘗試將J2D_D3D設置爲環境變量,並嘗試將它作爲vm參數傳遞。但沒有解決這個問題。任何想法這可能是什麼?

+5

你能發佈,說明你的問題了[MCVE(http://stackoverflow.com/help/mcve)的代碼示例? –

+0

是從6遷移到8還是從7遷移到8? – Adam

+0

這是5比8 – RBz

回答

3

僅供參考,以下示例不存在有問題。它使用一個GridLayout(0, 1)以及一致的間隙和邊界。調整封閉幀以查看效果。以Box(BoxLayout.Y_AXIS)作爲替代方案進行試驗。

我懷疑的原代碼(誤)使用的setXxxSize()setBounds()一些組合,這將顯示出的效果,如果所選擇的查找&感覺具有由按鈕的UI代理指定不同的幾何形狀。

image

import java.awt.EventQueue; 
import java.awt.GridLayout; 
import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

/** @see https://stackoverflow.com/a/31078625/230513 */ 
public class Buttons { 

    private void display() { 
     JFrame f = new JFrame("Buttons"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel p = new JPanel(new GridLayout(0, 1, 10, 10)); 
     p.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 
     for (int i = 0; i < 3; i++) { 
      p.add(new JButton("Button " + (i + 1))); 
     } 
     f.add(p); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Buttons()::display); 
    } 
}