2015-06-26 74 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); 
    } 
}