【发布时间】:2015-12-04 21:32:10
【问题描述】:
以下代码使用 GridLayout 对 JLabels 进行布局。 GridLayout 的参数如下:行、列、水平间距、垂直间距。在下面的示例中,标签之间在垂直和水平方向上都有 3 像素宽的间隙。
要使用图像而不是数字,您可以将 ImageIcon 传递给 JLabel 的构造函数而不是文本。
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class FrameTest {
public static void main(String[] args) {
final JFrame f = new JFrame("Frame Test");
JPanel panel = new JPanel(new GridLayout(4, 4, 3, 3));
for (int i = 0; i < 16; i++) {
JLabel l = new JLabel("" + i, JLabel.CENTER);
// JLabel l = new JLabel(new ImageIcon("image_file.png"),
// JLabel.CENTER);
l.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
l.setFont(l.getFont().deriveFont(20f));
panel.add(l);
}
f.setContentPane(panel);
f.setSize(200, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
在该代码中,小程序像堆栈一样构建,但我想让它可替换,就像我有一个移动的机器人一样,我只想替换机器人移动的标签而不是构建一个全新的网格?或者我可以用java中的任何其他GUI来做到这一点吗?
【问题讨论】:
-
你也可以只更改标签上的文字
-
或者简单地交换 ImageIcons。
-
是的,但如果路上有障碍物,更像是人工智能的东西,那就很难了-_-
-
也许使用带有自定义图形的
JPanel对您的应用程序来说更容易?例如:stackoverflow.com/questions/33716632/…. -
好人,谢谢,我知道为什么人们给了我-1,那是跛脚的人甚至不能让我一个人呆着
标签: java swing user-interface