5

多くの人が知っていると思いますが、GUI を作成するとき、さまざまなパネルを保持するために cardlayout を使用します。これにより、画面が最大のパネルの幅と高さに設定されます。SudokuPanelこれは、私の最初の画面の美学に問題を引き起こしますCalkuroPanel

大きな画面に変更したときに好みのサイズを設定しようとしましたが、役に立ちませんでした。

良い情報へのリンクや、一般的に役立つものへのリンクに関するヘルプは大歓迎です:)。

以下のメインクラス(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が、すごい、新しいフレーム サイズ: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();
}
4

2 に答える 2

4

cardlayout の個々のパネルのサイズを設定できますか

そうです。ただし、レイアウトはそれらを無視し、すべてのカードを同じサイズにします。期待できる最善の方法は、小さいパネルを別のパネル (レイアウト付き) に追加して、コンテンツを縮小できるようにすることです。


この回答は、単一のラベルを使用したこの手法を示しています。「小さなパネル」のラベルを交換し、右側のレイアウトを使用して中央に配置します。

于 2012-10-20T08:14:25.180 に答える