我正在研究game但是在JLabel的位置上存在一些问题。我有这个:
作为我的董事会。我想做两件事:
这是我的代码:
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
bp.removeAll();
bp.revalidate();
bp.repaint();
BufferedImage mFrame2= null;
try {
mFrame2 = ImageIO.read(new File("B2.png"));
}
catch (IOException e1) {
e1.printStackTrace();
}
bp = new BackgroundPanel(mFrame2);
bp.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JLabel hi1 = new JLabel ("Ledu");
Font fs = hi1.getFont();
hi1.setFont(fs.deriveFont(30f));
c.ipady = 0; //reset to default
c.ipadx = 0;
c.anchor = GridBagConstraints.FIRST_LINE_END;
c.insets = new Insets(10,0,0,0); //top padding
bp.add(hi1, c);
mainf.setContentPane(bp);
};
});
mainf.pack();
mainf.setVisible(true);
我如何将标签放在蓝色框的顶部,我需要做些什么来生成随机数,类似于骰子卷?
答案 0 :(得分:2)
1.将Ludo放置在蓝色板的顶部
嗯,我不知道这意味着什么。这是否意味着在蓝色区域的绝对中心。或者它是指顶部/左侧,顶部/中部,顶部/右侧?
更具描述性,因此我们不必猜测。
现在,我认为标签位于整个图像的中心。这是GridBagLayout的默认行为。如果您不希望图像位于中心,那么您需要使用weightx / weighty约束。
阅读How to Use GridBagLayout上Swing教程中的部分,了解约束如何工作的解释。
但是,我不认为这会解决您的问题,因为您无法根据"蓝色"定位组件。图像较大的区域。我建议你需要两个图像,一个用于游戏板,一个用于蓝色区域。然后,您可以开始相对在蓝色区域定位组件。
2.在其下插入一个随机生成的数字,以便每次按下图像时它都会改变!
按照上面的建议拆分图像后,您可以在第二张图像上使用垂直BoxLayout。然后,您可以显示两个标签,一个带有文本,另一个带有数字。