我試圖找出這個的布局(其余的代碼處于早期階段)但是對于這個塊,我試圖找出最好的(和可行的)方式來格式化它。我希望它是一個 8x8 網格,我最終會用寶藏/空按鈕填充它,但我還需要頂部的標題以及左側的一些標簽和文本。我不確定我是否能夠做多個網格,但我在下面所做的是嘗試創建一個 1x2 網格,然后在其中放置另外兩個網格,一個帶有左側的資訊(3x2),另一個帶有 8x8 網格用于紐扣。我知道它不接近它需要的樣子,但根本沒有顯示任何網格(它只是放置標題,然后是一列 8 行),我想知道我是否在任何型別的正確軌道上,或者如果我現在只是在編造事情。任何提示或有關可能嵌套網格的資源將不勝感激?我在我的書中找不到關于 That 的任何內容。
private void buildPanel()
{
// Create labels to display the
treasuresLeftLabel = new JLabel("Treasures left: ");
treasuresFoundLabel = new JLabel("Treasures found: ");
triesLeftLabel = new JLabel("Tries left: ");
// Create text fields for each label
treasuresLeftTextField = new JTextField(2);
treasuresLeftTextField.setEditable(false);
treasuresLeftTextField.setText(String.valueOf(20-game.getTreasuresFound()));
treasuresFoundTextField = new JTextField(2);
treasuresFoundTextField.setEditable(false);
treasuresFoundTextField.setText(String.valueOf(game.getTreasuresFound()));
triesLeftTextField = new JTextField(2);
triesLeftTextField.setEditable(false);
triesLeftTextField.setText(String.valueOf(game.getTriesLeft()));
emptyButton = new EmptyButton();
emptyButton.addActionListener(new emptyButtonListener());
treasureButton = new TreasureButton();
treasureButton.addActionListener(new treasureButtonListener());
// new JPanel object referenced by panel
panel = new JPanel();
panel.setBorder(BorderFactory.createTitledBorder("Treasure Hunt"));
// Add a gridlayout to the content pane
panel.setLayout(new GridLayout(1, 2));
panel.setLayout(new GridLayout(3, 2));
panel.add(treasuresLeftLabel);
panel.add(treasuresLeftTextField);
panel.add(treasuresFoundLabel);
panel.add(treasuresFoundTextField);
panel.add(triesLeftLabel);
panel.add(triesLeftTextField);
panel.setLayout(new GridLayout(8, 8));
panel.add(treasureButton);
panel.add(emptyButton);
}
uj5u.com熱心網友回復:
您不能在同JPanel一個中使用多個網格- 一個面板,一個布局管理器。
但是您可以通過使用嵌套面板來嵌套布局管理器(從而嵌套網格)。
例如,您可以將 aBorderLayout用于第一個面板(包含頂部的標題、左側的資訊面板和中間的按鈕面板。
構建這些面板的代碼可能如下所示:
// panel contains the complete UI
panel = new JPanel();
panel.setBorder(BorderFactory.createTitledBorder("Treasure Hunt"));
panel.setLayout(new BorderLayout());
panel.add(new JLabel("This is the Title"), BorderLayout.PAGE_START);
JPanel infoPanel = new JPanel();
infoPanel.setLayout(new GridLayout(3, 2));
infoPanel.add(treasuresLeftLabel);
infoPanel.add(treasuresLeftTextField);
infoPanel.add(treasuresFoundLabel);
infoPanel.add(treasuresFoundTextField);
infoPanel.add(triesLeftLabel);
infoPanel.add(triesLeftTextField);
panel.add(infoPanel, BorderLayout.LINE_START);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(8, 8));
buttonPanel.add(treasureButton);
buttonPanel.add(emptyButton);
for (int i = 0; i < 62; i ) {
buttonPanel.add(new JButton(String.format("d", i)));
}
panel.add(buttonPanel, BorderLayout.CENTER);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374389.html
上一篇:如何使當我在JScrollPane中放置一個可動態調整大小的JPanel時它可以作業?
下一篇:如何支持和繪制多種演算法
