JFrameにGridLayoutが含まれている場合に、特定のボーダーサイズを設定できますか?
これは
import java.awt.*;
import javax.swing.*;
public class Layout {
private JPanel p;
public Layout() {
p = new JPanel(new GridLayout(5, 5, 1, 1));
p.setBackground(Color.BLACK);
JLabel[][] lbs = new JLabel[5][5];
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++) {
lbs[i][j] = new JLabel(".", JLabel.CENTER);
lbs[i][j].setBackground(Color.WHITE);
lbs[i][j].setOpaque(true);
p.add(lbs[i][j]);
}
}
public JComponent getGUI() {
return p;
}
}
これは、それが付属していレイアウトクラスである
import javax.swing.*;
import java.awt.*;
public class Image {
public static void main(String[] args) {
JFrame f = new JFrame();
Layout lo = new Layout();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(new Dimension(500, 500));
f.setLocationRelativeTo(null);
f.getContentPane().add(lo.getGUI(), BorderLayout.CENTER);
f.setVisible(true);
}
}
サンプルクラスでコードの結果がこれです:
だから、私の質問は、上記の画像のように固定サイズのサイズを変更する方法です。後でボタンのようなコンポーネントを後で追加したいと思います。私はGridLayoutを適用した後、JPanelの固定サイズを設定する方法を理解できません。チェスに似たものを表示するためにGridLayoutを追加しました。私はボタンを除いて何も触れません。 JPanelはそれを表示するためのものです。
5x5空間のオブジェクトを表すために、グリッドの中央にあるドットを他の記号(!や#など)に変更します。私はオブジェクトを提示するためにJLabelを使用します。 GridBagLayoutを使用すると、すべてのシンボルが1つの領域にまとめられます。
底に画像全体のJFrameを満たすのJPanelです。 JPanelがJFrame全体を占めないようにして、ボタンなどの余分なコンポーネントを追加するスペースがあるようにしてください。 – NoobestPros
@NoobestPros:この効果を実現し、複雑なGUIを簡単に作成できるように、JPanelsをネストする必要があります。答えには編集のコードを見てください。 –
たとえば、@camickrが削除されたコメントに記載されているように、この例を作成していたときに、BorderLayout内でJPanelを使用してGridLayoutをネストすると、目的のGUIを作成できます。 –