これを実行しようとすると、閉じられない空のフレームが継続して取得され、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ゲームを作ることですが、最初のステップは選手の数を決定することです。これは私がこれを行う方法を知っている唯一の方法です、そしてこれは私がグラフィックスでやった2番目のプログラムなので、私は決してJavaの専門家ではありません。私は数日間立ち往生しているので、私が得ることができる助けを感謝します。
いつ 'valid'の値を変更すると思いますか? (ヒント:無限ループのためにCPUをcooptedしたので、決して呼び出すことのできないイベントハンドラにあります) –
上記のvalid宣言を追加するのを忘れました。私はそれを 'private static boolean valid = false;と宣言しました。それはあなたの意味ですか? – matthew65456
私はその詳細を逃しましたが、実際の問題とは無関係です。下の私の答えを見てください。 –