Java 如何使用GridBagLayout将组件放置在特定(或多或少)位置?
我想创建一个窗口,其中有一个背景图像和上面的组件。我已经设法让组件和背景“堆叠”,但我的问题是定位组件 我尝试过使用AbsoluteLayout,但似乎不起作用 这是迄今为止我的(初学者)代码:Java 如何使用GridBagLayout将组件放置在特定(或多或少)位置?,java,swing,layout-manager,gridbaglayout,Java,Swing,Layout Manager,Gridbaglayout,我想创建一个窗口,其中有一个背景图像和上面的组件。我已经设法让组件和背景“堆叠”,但我的问题是定位组件 我尝试过使用AbsoluteLayout,但似乎不起作用 这是迄今为止我的(初学者)代码: public class RegionPrompt extends JPanel { public RegionPrompt () throws IOException { JFrame frame = new JFrame("Map"); GridBagCon
public class RegionPrompt extends JPanel {
public RegionPrompt () throws IOException {
JFrame frame = new JFrame("Map");
GridBagConstraints gbc = new GridBagConstraints();
JPanel pane = new JPanel() {
URL image2 = getClass().getResource("map.jpg");
BufferedImage image = ImageIO.read(image2);
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), this);
}
};
frame.setContentPane(pane);
JPanel pane2 = new JPanel();
pane2.setOpaque(false);
pane2.setSize(DefaultGUI.defaultSize);
pane2.setLayout(new GridBagLayout());
JButton c = new JButton("Map Location");
//gbc.gridx = 0;
//gbc.gridy = 0;
c.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Location information", JOptionPane.INFORMATION_MESSAGE);
}
});
pane2.add(c,gbc);
frame.add(pane2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(653, 448);
frame.setVisible(true);
}
}
非常感谢您的帮助(以及对这段代码的原谅) 你将会有一段艰难的时间,因为决定如何布局一个组件需要很多信息,而这些信息可能会在不同的平台之间发生变化。在您的情况下,我几乎认为生成一个自定义布局会更容易,您可以使用它来支持您的需求。非常感谢您,我会去查找它。以最小的大小提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度。