【问题标题】:can i replace labels ? or can i give a GUI and ID ? like in html?我可以更换标签吗?或者我可以给一个 GUI 和 ID 吗?像在 html 中?
【发布时间】: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


【解决方案1】:

首先,我建议使用JLabel 的数组来跟踪每个标签的引用。

JLabel[] labels = JLabel[16];

然后,当事件发生时,您可以使用JLabel#setIcon 方法动态更改图标。

【讨论】:

  • 完成了,你能给它一个有用和清晰的+1吗?那个人确实-1降低了我的声誉,甚至无法再提供反馈-_-再次感谢。
  • @MohamedGabr 没问题,我做到了 :) 很高兴它对你有所帮助
  • 你是最棒的,竖起大拇指!!
猜你喜欢
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2020-08-05
  • 2012-04-24
  • 2023-03-11
相关资源
最近更新 更多