這比我想象的要困難得多。我想要做的就是將此JPanel「粘」到框架的左側。這是迄今爲止我所擁有的。 (如果可能的話,我不想使用GridBagLayout(我是一名java新手))。想將JPanel與Java框架的左側對齊
labels = new JPanel();
JLabel currentWordLA = new JLabel("Current word:");
JLabel triedLettersLA = new JLabel("Tried letters:");
JLabel triesLeftLA = new JLabel("Tries remaining:");
JButton restart = new JButton("Reset");
labels.setLayout(new BoxLayout(labels, BoxLayout.Y_AXIS));
labels.add(currentWordLA);
labels.add(triedLettersLA);
labels.add(triesLeftLA);
scorePanel.add(labels, BorderLayout.WEST);
編輯:對不起,這裏是完整的代碼。它是框架內面板內的一種面板。試圖讓框架與左邊對齊。謝謝!
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Hangman {
JFrame frame;
private String[] wordList = {
"computer", "java", "activity", "alaska", "appearance", "article",
"automobile", "basket", "birthday", "canada", "central", "character",
"chicken", "chosen", "cutting", "daily", "darkness", "diagram",
"disappear", "driving", "effort", "establish", "exact",
"establishment", "fifteen", "football", "foreign", "frequently",
"frighten", "function", "gradually", "hurried", "identity",
"importance", "impossible", "invented", "italian", "journey",
"lincoln", "london", "massage", "minerals", "outer", "paint",
"particles", "personal", "physical", "progress", "quarter",
"recognise", "replace", "rhythm", "situation", "slightly",
"steady", "stepped", "strike", "successful", "sudden",
"terrible", "traffic", "unusual", "volume", "yesterday"};
private String mysteryWord;
private boolean finished = false;
private boolean won = false;
private Button a[];
public static void main(String[] args) {
Hangman gui = new Hangman();
gui.go();
}
class myDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
setBackground(Color.white);
g.setColor(Color.gray);
g.fillRect(50, 200, 150, 20);
g.fillRect(90, 20, 10, 200);
g.fillRect(90, 20, 60, 10);
g.setColor(Color.black);
g.fillRect(145, 20, 5, 25);
}
}
public void go() {
frame = new JFrame("Hangman");
JPanel topPanel = new JPanel();
myDrawPanel noosePanel = new myDrawPanel();
JPanel bottomPanel = new JPanel();
JPanel scorePanel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(2, 0));
bottomPanel.setLayout(new GridLayout(0, 2));
scorePanel.setSize(20, 100);
noosePanel.setBorder(BorderFactory.createTitledBorder("Your progress."));
topPanel.setBorder(BorderFactory.createTitledBorder("Your arsenal."));
scorePanel.setBorder(BorderFactory.createTitledBorder("Your score."));
frame.add(topPanel);
frame.add(bottomPanel);
bottomPanel.add(scorePanel);
bottomPanel.add(noosePanel);
//The Stats section.
JPanel labels = new JPanel();
JLabel currentWordLA = new JLabel("Current word:");
JLabel triedLettersLA = new JLabel("Tried letters:");
JLabel triesLeftLA = new JLabel("Tries remaining:");
JButton restart = new JButton("Reset");
labels.setLayout(new BoxLayout(labels, BoxLayout.Y_AXIS));
labels.add(currentWordLA);
labels.add(triedLettersLA);
labels.add(triesLeftLA);
scorePanel.add(labels, BorderLayout.WEST);
int i;
StringBuffer buffer;
a = new Button[26];
topPanel.setLayout(new GridLayout(4, 0, 10, 10));
// create all 26 buttons
for (i = 0; i < 26; i++) {
buffer = new StringBuffer();
buffer.append((char) (i + 65));
a[i] = new Button(buffer.toString());
a[i].setSize(100, 100);
//a[i].addActionListener(this);
topPanel.add(a[i]);
}
frame.setSize(500, 500);
frame.setResizable(false);
frame.setVisible(true);
}
}
這就是你直到現在?爲了使BorderLayout正常工作,您需要將更多組件添加到面板。 –
你可以實現一個構造函數,而不是'go()'。 – 11684