如何制作Tile类并将其添加到JFrame?

时间:2015-11-14 02:00:28

标签: java

所以我有一个瓷砖类:

public class Tile扩展了JLabel {

private char _c;
private static char randomChar;

public Tile(char c, Color background) {
    super();
    setBackground(background);
    setOpaque(true);
    _c = c;

}

public static char randomLetter() {
    Random r = new Random();
    randomChar = (char) (97 + r.nextInt(25));
    return randomChar;
    }

public static void main(String[] args) {
    Tile tile = new Tile(Tile.randomLetter(), Color.BLUE);
    Tile tile1 = new Tile(Tile.randomLetter(), Color.RED);
    Tile tile2 = new Tile(Tile.randomLetter(), Color.GREEN);
    Tile tile3 = new Tile(Tile.randomLetter(), Color.YELLOW);

    JFrame frame = new JFrame();
    frame.getContentPane().setLayout(new GridLayout(4,1));
    frame.setSize(500, 800);
    frame.setVisible(true);
    frame.add(tile);
    frame.add(tile1);
    frame.add(tile2);
    frame.add(tile3);

    System.out.println(Tile.randomLetter());

它应该有一个字母和一个颜色。我试图在JFrame中创建这些图块的4 x网格。我该怎么做?

据说我需要另一个类,例如Model类来继续制作这些图块而不是手工制作。我怎么能这样做呢?

1 个答案:

答案 0 :(得分:1)

您可以使用JLabel

JLabel blueLabel = new JLabel("a");
blueLabel.setOpaque(true);
blueLabel.setBackground( Color.BLUE );

然后,您可以将JPanelGridLayout一起使用,并将标签添加到面板中:

JPanel panel = new JPanel( new GridLayout(1, 0) );
panel.add(blueLabel);
panel.add(redLabel);
panel.add(...);

编辑:

public class Tile extends JLabel
{
    public Tile(String letter, Color background)
    {
        super(letter);
        setBackground( background );
        setOpaque( false );
    }
}