我在java 5中的swing应用程序,其显示类似
迁移到java 8后,放大并仅显示其中的一部分
我看到this并尝试将J2D_D3D设置为环境变量,并尝试将其作为vm参数传递。但没有解决这个问题。知道这可能是什么吗?
答案 0 :(得分:3)
作为参考,这是一个没有有问题的例子。它使用GridLayout(0, 1)
具有一致的间隙和边界。调整封闭框架的大小以查看效果。尝试使用Box(BoxLayout.Y_AXIS)
替代。
我怀疑原始代码(mis-)使用了setXxxSize()
或setBounds()
的某种组合,如果选择了Look&感觉具有按钮的UI委托指定的不同几何。
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);
}
}