我可以更换标签吗?或者我可以提供GUI和ID吗?喜欢在HTML?

时间:2015-12-04 12:44:09

标签: java swing user-interface

以下代码使用GridLayout布局JLabel。 GridLayout的参数如下:rows,cols,horizo​​ntal gap,vertical gap。在下面的例子中,我在垂直和水平标签之间有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);
    }
}

在那段代码中applet像堆栈一样堆积,但是我想让它可以替换,就好像我有一个移动的机器人而我只想更换机器人移动的标签而不是构建一个全新的网格?或者我可以用java中的任何其他GUI执行此操作吗?

1 个答案:

答案 0 :(得分:0)

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

JLabel[] labels = JLabel[16];

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