所以我有一个瓷砖类:
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类来继续制作这些图块而不是手工制作。我怎么能这样做呢?
答案 0 :(得分:1)
您可以使用JLabel
:
JLabel blueLabel = new JLabel("a");
blueLabel.setOpaque(true);
blueLabel.setBackground( Color.BLUE );
然后,您可以将JPanel
与GridLayout
一起使用,并将标签添加到面板中:
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 );
}
}