我有一个JFrame
,其中一个主GamePanel
:
import javax.swing.*;
public class GameFrame extends JFrame {
public static void main(String[] args) {
JFrame gameFrame = new JFrame( "Ultimate Tic Tac Toe");
gameFrame.setResizable(false);
gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameFrame.add( new GamePanel() );
gameFrame.pack();
gameFrame.setVisible(true);
}
}
GamePanel有BorderLayout
我有setPreferredSize(new Dimension(800,800))
:
公共类GamePanel扩展了JPanel实现的ActionListener {
private BoardPanel boardPanel; //the main game, comprised of minigames
private static TrackingPanel trackingPanel; //keeps track of score, turn, and stuff
private ArrayList<MiniGame> miniGames;
public GamePanel() {
super( new BorderLayout());
setFocusable(true);
setPreferredSize(new Dimension(800,800));
//create panel that will hold the 9 mini games
boardPanel = new BoardPanel(this);
//add actionListeners to each button
miniGames = boardPanel.getMiniGames();
for (MiniGame mini : miniGames) {
for (SquareButton button : mini.getSquares())
button.addActionListener(this);
}
add( trackingPanel, BorderLayout.NORTH);
add( boardPanel, BorderLayout.CENTER);
}//end constructor
在CENTER中我的BoardPanel
有GridLayout(3,3)
,因此BoardPanel
有9个孩子MiniGame JPanels
。 HERE&#39;我的问题 :添加如下的迷你游戏工作正常,但出于某种原因,他们被推到并在父母外面展示{ {1}}和窗口。理想情况下,我想在不改变布局的情况下这样做,因为我知道他们以前工作过。这是BoardPanel的代码。
BoardPanel
我知道面板都被添加和显示(我通过更改边框厚度来检查。另外,增加空边框大小会显示更多的MiniGame面板)。所以,而不是像网格一样显示:
import java.awt.*;
import java.util.ArrayList;
import javax.swing.JPanel;
public class BoardPanel extends JPanel {
private ArrayList<MiniGame> miniGames;
public BoardPanel(GamePanel gp) {
super(new GridLayout(3,3));
setBorder(BorderFactory.createEmptyBorder(200,200,200,200));
miniGames = new ArrayList<MiniGame>(9);
for(int i = 1; i<=9; i++)
miniGames.add(new MiniGame(gp, i));
for(MiniGame mini : miniGames)
add(mini);
}
他们对角线向下显示:
1 2 3
4 5 6
7 8 9
其他人在父母小组之外。
这是MiniGame构造函数,如果有帮助:
1
2
3
...
全部谢谢!
答案 0 :(得分:1)
向后工作我意识到这是我称之为getX()和getY()的两个函数。我想那些是JPanels的默认函数,我压倒了它们。
答案 1 :(得分:0)
“MiniGame构造函数”显示您调用{add(squares [i]);},但是您没有显示MiniGame中的添加功能。由于您没有显示其所有代码,因此我们不知道它的扩展内容。如果它本身就是一个UI类,那么你的问题可能是布局管理器在该容器中处于活动状态,无论它是什么。