我正在用java在互联网上播放游戏。我正在使用流来发送和接收数据。
我的问题是:如何显示弹出窗口,告知用户他必须等待。
我写了这个:
while(!in.ready())
JOptionPane.showMessageDialog(this, "Not your turn");
它起作用并且还防止用户按下按钮,但也强制不断地按下" ok"按钮。那么有什么弹出窗口是不可能关闭的,直到"在"流会准备好吗?或任何其他有用的选项?
答案 0 :(得分:0)
你必须创建自己的。例如:
class CustomBlockerDialog extends JDialog {
public CustomBlockerDialog(Frame owner, String text) {
super(owner, true);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setSize(300, 100); // Adjust if needed
setTitle("");
add(new JLabel(text, SwingConstants.CENTER));
}
}
显示/隐藏(从主窗口):
CustomBlockerDialog block = new CustomBlockerDialog(this, "Not your turn"); // Creation, once
block.setVisible(true); // Show
block.setVisible(false); // Hide
请记住用其他帖子中的SwingUtilities.invokeLater
来调用它们。
答案 1 :(得分:0)
你必须创建一个自定义对话框打开它,并在流准备就绪时关闭:
final JDialog dialog = new JDialog();
dialog.setPreferredSize(new Dimension(300, 90));
dialog.add(new JLabel(" Please Wait..."));
dialog.setUndecorated(true); // hide close button
dialog.pack();
dialog.setLocation(400, 400); // or next line
//dialog.setLocationRelativeTo(this);
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
while(!in.ready()){ /* wait...*/ };
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
dialog.setVisible(false);
dialog.dispose();
}
});