當我嘗試運行此操作時,我一直收到一個無法關閉的空幀,並且必須從eclipse中終止該程序。我相當肯定,問題是while循環(約的一路下跌的代碼塊2/3)的結果,但我一直沒能想出一個辦法來解決這個Java JFrame在while循環中無法正常工作
public Draw()
{
super("Uno");
JMenuBar bar = new JMenuBar(); // create menu bar
JMenu gameMenu = new JMenu("Play Game");
JMenu quitMenu = new JMenu("Quit"); //Quit Program
bar.add(gameMenu); // add Add menu to menu bar
bar.add(quitMenu); // add quit button to menu bar
setJMenuBar(bar); // set menu bar for this application
window = new JDesktopPane();
add(window);
gameMenu.addMouseListener(
new MouseListener()
{
public void mouseClicked(MouseEvent e)
{
Dimension size = window.getSize();
double height = size.getHeight();
double width = size.getWidth();
JInternalFrame frame = new JInternalFrame("Uno", true, true, true, true);
JFrame input = new JFrame();
input.setTitle(" ");
input.setSize(350, 155);
input.setLayout(new FlowLayout());
input.setLocationRelativeTo(null);
input.setVisible(true);
JLabel label1 = new JLabel("How many total players? (2-10)");
final JTextField text1 = new JTextField(3);
JLabel label2 = new JLabel("How many computer players? *");
final JTextField text2 = new JTextField(3);
JLabel label3 = new JLabel("* Computer players must be <= total number of players");
JButton confirm = new JButton("OK");
label1.setVisible(true);
label2.setVisible(true);
label3.setVisible(true);
text1.setVisible(true);
text2.setVisible(true);
confirm.setVisible(true);
input.add(label1);
input.add(text1);
input.add(label2);
input.add(text2);
input.add(label3);
input.add(confirm);
while(valid == false)
{
confirm.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String players = text1.getText();
String computers = text2.getText();
int temp1 = Integer.parseInt(players);
System.out.println("Number of players = " + temp1);
int temp2 = Integer.parseInt(computers);
System.out.println("Number of computers = " + temp2);
if (temp1 >= 2 && temp1 <= 10)
if (temp2 <= temp1 && temp2 >= 0)
valid = true;
} //close actionPerformed
}); //close ActionListener
} //close while loop
} //close mouseClicked
} //close mouseListener
} //close Draw
最初,我遇到了一個問題,它無限地將框架繪製在本身之上,因爲while循環不斷返回false。通過從while循環中刪除組件並將它們放在它之前,解決了該問題。現在,當我運行它時,我得到的全部是:picture
該程序的目標是製作Uno遊戲,但第一步是確定玩家人數。這是我知道如何做到這一點的唯一方式,這只是我用圖形完成的第二個程序,所以我絕不是Java的專家。我會很感激我能得到的任何幫助,因爲我現在已經堅持了幾天。
你什麼時候期望'valid'的值改變? (提示:它是在一個事件處理程序中,因爲您已經將CPU用於無限循環而無法調用)。 –
我忘了在上面添加有效聲明。在繪製之外,我把它聲明爲'private static boolean valid = false;'這是你的意思嗎? – matthew65456
我錯過了這個細節,但它與真正的問題無關。請參閱下面的答案。 –