2017-07-26 265 views
-3

我试图在我的GUI中使用GridbagconstraintsLayoutManager中添加Java中的按钮。无论坐标如何,按钮的位置始终位于中心在Java/Swing中更改按钮位置

package StudentInfo; 
import javax.swing.*; 
import java.awt.*; 

public class Gui { 

public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(); 

    frame.add(panel); 
    panel.setLayout(new GridBagLayout()); 
    frame.setSize(600,600); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setResizable(false); 

    GridBagConstraints gbc = new GridBagConstraints(); 

    JButton b = new JButton("Hello"); 
    gbc.gridx=1; 
    gbc.gridy=1; 
    panel.add(b,gbc); 

    JButton v = new JButton("exit"); 
    gbc.gridx=1; 
    gbc.gridx=0; 
    panel.add(v,gbc); 

} 
} 

输出

enter image description here

问题

如何定义按钮的坐标,并将其置于所需的位置?

+2

你的问题缺少一个重要的细节:你希望**放哪些按钮。一种(非常差)的解决方案是使用空布局和绝对定位,但是这会导致GUI只能在一个平台上很好地工作,而且很难调试,维护和增强,所以应该避免使用。更好的解决方案是更好地定义您的需求,然后适当地使用Swing布局管理器来最佳地定位组件。所以请再次帮助我们 - 你想要的GUI是什么?请显示图像。 –

+0

除了@HovercraftFullOfEels的建议:在最小尺寸下提供ASCII图形或简单的*图形布局*,如果可以调整大小,宽度和高度更大。** –

+0

@HovercraftFullOfEels GUI I想要的是2个文本框和两个按钮。两个文本字段在另一个下方,并且按钮并排在第二个文本字段下方 – Dhaval

回答

2

您需要为GridBagConstraints对象设置weightxweighty

除非您为weightx或weighty指定了至少一个非零值,否则所有组件都会聚集在其容器的中心。这是因为当权重为0.0(默认值)时,GridBagLayout会在其网格单元格和容器边缘之间放置任何额外的空间。 How to Use GridBagLayout

我建议您通过本教程,以及对其他Swing布局管理器的那些读,如果你想继续使用Java的GUI与合作,因为他们需要熟练的一个很好的协议,以正确使用。