Я пытаюсь реализовать Tetris в Swing, потому что я пытаюсь рисовать прямоугольники, смежные с каждым, но второй прямоугольник не приближается к первому.Как рисовать прямоугольники, смежные в Swing?
Также, если getPreferredSize() возвращает что-либо менее 50,50, то на экране ничего не отображается. Что не так в этом коде и как рисовать соседние прямоугольники.
public class Tetris extends JFrame
{
public Tetris(String string)
{
super(string);
}
public static void main(String[] args)
{
Tetris tetris = new Tetris("Tetris");
tetris.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
tetris.getContentPane().add(mainPanel);
tetris.setVisible(true);
tetris.setLocationRelativeTo(null);
tetris.pack();
tetris.setSize(500, 500);
tetris.setResizable(false);
tetris.paintBoard(mainPanel);
}
public void paintBoard(JPanel mainPanel)
{
Piece p1 = new Piece(10,10,50,50,Color.GREEN);
Piece p2 = new Piece(60,10,50,50,Color.RED);
mainPanel.add(p1);
mainPanel.add(p2);
}
}
public class Piece extends JComponent
{
private int X = 0;
private int Y = 0;
private int H = 0;
private int W = 0;
private Color c;
public Piece(int X, int Y, int W, int H, Color c)
{
this.X = X;
this.Y = Y;
this.W = W;
this.H = H;
this.c = c;
}
@Override
public void paintComponent(Graphics g)
{
g.setColor(c);
g.drawRect(X, Y, W, H);
g.fillRect(X, Y, W, H);
System.out.println("g.drawRect("+X+", "+Y+", "+W+", "+H+")");
}
@Override
public Dimension getPreferredSize() {
return new Dimension(50, 50);
}
}
независимо от проблемы, не используя LayoutManager _not_ решение – kleopatra