0
當包含GridLayout時,我可以爲JFrame設置特定的邊框大小嗎?
這是一個示例類
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);
}
}
這是帶有它
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;
}
}
結果代碼的佈局類是這樣的:
所以,我的問題是如何確定像上面的圖像一樣的尺寸?我稍後想在後面添加按鈕等組件。我無法弄清楚在應用GridLayout之後如何設置JPanel的固定大小。我添加了GridLayout,因爲我需要它顯示與國際象棋類似的東西。除了按鈕之外,我不會觸摸任何東西。 JPanel是爲了這個觀點。
我應該提到我會將網格中間的點改爲其他符號(如!或#)來表示5x5空間中的對象。我使用JLabel來呈現對象。如果我使用GridBagLayout,所有的符號都被壓扁在一個區域中。
底部的畫面是填充整個的JFrame JPanel中。我希望JPanel不要佔用整個JFrame,這樣我就可以添加一些空間來添加其他組件,如按鈕 – NoobestPros
@NoobestPros:您需要嵌套JPanel才能達到這種效果,並且允許簡單地創建複雜的GUI。請參閱編輯中的代碼以回答。 –
例如,@camickr在創建此示例時發佈的已刪除評論中聲明,如果您使用一個BorderLayout嵌套您的GridLayout-使用JPanel,則可以創建所需的GUI。 –