Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swing JPanels赢得';不显示在网格布局中 当我在我的GridBagLayout JPanel(2)中添加一个JPAND(1)时,我的JPAND(1)缩小成位于中间的一个微小的正方形。我不知道为什么会发生这种情况,因为理论上它应该是有效的。我认为这可能与默认的边界布局有关?因为我读到BodDead在中间放置JPAND。但是我已经将我的布局设置为GridBag,所以我不知道为什么会发生这种情况。这是我的密码: JFrame f = new JFrame("TEST"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); f.setSize(300, screenSize.height); f.setLocation(screenSize.width - 300, 0); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GridBagConstraints gbc = new GridBagConstraints(); JPanel panel = new JPanel(new GridBagLayout()); JPanel A = new JPanel(); Dimension d = new Dimension(270, 50); A.setSize(d); A.setBackground(Color.GREEN); JPanel B = new JPanel(); B.setSize(d); B.setBackground(Color.BLUE); gbc.gridy = 0; panel.add(A, gbc); gbc.gridx = 1; panel.add(B, gbc); f.add(panel); f.validate(); f.repaint();_Swing_Jpanel_Gridbaglayout - Fatal编程技术网

Swing JPanels赢得';不显示在网格布局中 当我在我的GridBagLayout JPanel(2)中添加一个JPAND(1)时,我的JPAND(1)缩小成位于中间的一个微小的正方形。我不知道为什么会发生这种情况,因为理论上它应该是有效的。我认为这可能与默认的边界布局有关?因为我读到BodDead在中间放置JPAND。但是我已经将我的布局设置为GridBag,所以我不知道为什么会发生这种情况。这是我的密码: JFrame f = new JFrame("TEST"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); f.setSize(300, screenSize.height); f.setLocation(screenSize.width - 300, 0); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GridBagConstraints gbc = new GridBagConstraints(); JPanel panel = new JPanel(new GridBagLayout()); JPanel A = new JPanel(); Dimension d = new Dimension(270, 50); A.setSize(d); A.setBackground(Color.GREEN); JPanel B = new JPanel(); B.setSize(d); B.setBackground(Color.BLUE); gbc.gridy = 0; panel.add(A, gbc); gbc.gridx = 1; panel.add(B, gbc); f.add(panel); f.validate(); f.repaint();

Swing JPanels赢得';不显示在网格布局中 当我在我的GridBagLayout JPanel(2)中添加一个JPAND(1)时,我的JPAND(1)缩小成位于中间的一个微小的正方形。我不知道为什么会发生这种情况,因为理论上它应该是有效的。我认为这可能与默认的边界布局有关?因为我读到BodDead在中间放置JPAND。但是我已经将我的布局设置为GridBag,所以我不知道为什么会发生这种情况。这是我的密码: JFrame f = new JFrame("TEST"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); f.setSize(300, screenSize.height); f.setLocation(screenSize.width - 300, 0); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GridBagConstraints gbc = new GridBagConstraints(); JPanel panel = new JPanel(new GridBagLayout()); JPanel A = new JPanel(); Dimension d = new Dimension(270, 50); A.setSize(d); A.setBackground(Color.GREEN); JPanel B = new JPanel(); B.setSize(d); B.setBackground(Color.BLUE); gbc.gridy = 0; panel.add(A, gbc); gbc.gridx = 1; panel.add(B, gbc); f.add(panel); f.validate(); f.repaint();,swing,jpanel,gridbaglayout,Swing,Jpanel,Gridbaglayout,此外,当我将A和B的边界设置为100像素时,它们都开始显示。所以我真的很困惑 停止使用GridBagLayout拉头发,改用MigLayout,这样可以节省大量时间: 欢迎来到论坛:-)为了获得最佳沟通,请学习java命名约定并坚持使用Swing,您永远不会调用someComponent.setSize()-这是布局管理器的工作,请参见f.i.始终调用f.setVisible(true)最后,当您向容器添加完组件后,在f.validate()之前,为了在屏幕上定位JFrame,请尝试使用f.se

此外,当我将A和B的边界设置为100像素时,它们都开始显示。所以我真的很困惑

停止使用GridBagLayout拉头发,改用MigLayout,这样可以节省大量时间:


欢迎来到论坛:-)为了获得最佳沟通,请学习java命名约定并坚持使用Swing,您永远不会调用someComponent.setSize()-这是布局管理器的工作,请参见f.i.始终调用
f.setVisible(true)
最后,当您向容器添加完组件后,在
f.validate()
之前,为了在屏幕上定位JFrame,请尝试使用
f.setLocationByPlatform(true)
(最有效的方法)或
f.setLocationRelativeTo(null)
命名约定是这样的,因为我正在进行快速测试,因为我的原始面板涉及图像。不管怎样,我想我发现了问题!我认为只有当它是一个JLabel时才会显示出来。我解决了这个问题。谢谢大家!