當我創建我的GUI時,我使用一個cardlayout來保存我不同的面板,因爲我相信很多人都知道。這將我的屏幕設置爲我最大面板的寬度和高度。這導致了我的第一屏幕的美觀問題,這比SudokuPanel
和CalkuroPanel
小得多。我可以設置CardLayout中單個面板的大小嗎?
我試圖設置首選大小,當我改變到更大的屏幕,但無濟於事。
任何幫助鏈接到良好的信息或任何只是一般的幫助將不勝感激:)。
請在下面找到我的主類(在這裏我得出GUI):
import java.awt.*; import javax.swing.*; import java.util.*;
public class puzzleGUI{
private static JPanel screens;
public static String username;
static public void main (String[] args){
JFrame puzzle = new JFrame ("Sudoku/Calkuro Pro");
...
PuzzleStartPanel startPanel = new PuzzleStartPanel();
PuzzleChoosePanel choosePanel = new PuzzleChoosePanel();
PuzzleSudokuPanel sudokuPanel = new PuzzleSudokuPanel();
PuzzleCalkuroPanel calkuroPanel = new PuzzleCalkuroPanel();
screens = new JPanel(new CardLayout());
screens.add(startPanel, "start");
screens.add(choosePanel, "choosePuzzle");
screens.add(sudokuPanel, "sudoku");
screens.add(calkuroPanel, "calkuro");
screens.setPreferredSize (new Dimension(250, 80));
puzzle.setJMenuBar(menuBar);
puzzle.getContentPane().add(screens);
puzzle.pack();
puzzle.setVisible(true);
puzzle.setResizable(false);
puzzle.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
static public void getUsername(String str){
username = str;
}
static public void openWindow(String newFrame){
CardLayout cl = (CardLayout)(screens.getLayout());
cl.show(screens, newFrame);
}
}
編輯
brainblast嘗試重置首選大小時openWindow
被調用後收拾幀,wolah ,新的幀大小:d
static public void openWindow(String newFrame, int a, int b){
CardLayout cl = (CardLayout)(screens.getLayout());
cl.show(screens, newFrame);
screens.setPreferredSize (new Dimension(a, b));
puzzle.pack();
}
有沒有什麼辦法的框架取決於當前面板 –
*「幀動態改變大小」 *'包()'可能在某些情況下工作的動態改變大小,但不是這一個。所以不行'。正如我承認的那樣,如果這是必需的功能,您可能需要根據需要添加和刪除面板,這本身需要一些額外的代碼行才能使其按預期工作。 –
原來在重新設置面板的首選尺寸後重新打包框架:D –