Добавление JLabel над GridLayout [закрыто]
У меня возникли трудности с содержанием GridLayout, так что добавление JLabel над ним ничего не сбросит. Я попробовал несколько разных вещей, но все еще не могу выровнять его правильно.
Это игра в крестики-нолики:
package assg01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TicTacToe extends JFrame {
private static final String TITLE = "Tic Tac Toe";
private static final int WIDTH = 700;
private static final int HEIGHT = 808;
private Container content;
private JLabel result;
private JButton[] cells;
private JButton exitButton;
private JButton initButton;
private CellButtonHandler[] cellHandlers;
private ExitButtonHandler exitHandler;
private InitButtonHandler initHandler;
private boolean noughts;
private boolean gameOver;
private Container panel;
private ImageIcon x,empty,o;
public TicTacToe() {
// Necessary initialization code
setTitle(TITLE);
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Get content pane
panel = getContentPane();
//content.setBackground(Color.blue.darker())
// Set layout
panel.setLayout(new GridLayout(3, 3, 5, 5));
// Create cells and handlers
cells = new JButton[9];
cellHandlers = new CellButtonHandler[9];
for (int i = 0; i < 9; i++) {
cells[i] = new JButton();
cellHandlers[i] = new CellButtonHandler();
cells[i].addActionListener(cellHandlers[i]);
}
// Create result label
//result.setForeground(Color.white);
// Add elements to the grid content pane
for (int i = 0; i < 9; i++) {
panel.add((cells[i]));
}
init();
}
public void init() {
// Initialize
JPanel topPanel = new JPanel();
add(topPanel,BorderLayout.NORTH);
JLabel myLabel = new JLabel ("Label") ;
topPanel.add(myLabel);
x=new ImageIcon("images/x.png");
empty=new ImageIcon("images/empty.png");
o=new ImageIcon("images/o.png");
noughts = true;
gameOver = false;
// Initialize text in buttons
for (int i = 0; i < 9; i++) {
char ch = (char) (i + 1);
cells[i].setIcon(empty);
cells[i].setName(""+ch);
}
// Initialize result label
setVisible(true);
}
1 ответ:
Мне трудно содержать
GridLayout
, так что добавлениеJLabel
над ним ничего не сбросит.Фокус здесь в том, чтобы объединить макеты:
- создайте
JPanel
с помощьюBorderLayout
- добавьте
GridLayout
кCENTER
изBorderLayout
.- добавьте
JLabel
кPAGE_START
изBorderLayout
.Другой вариант-использовать
TitledBorder
(вместоJLabel
) ДляGridLayout
.