如何解决如何刷新 JFrame
所以我想做某种 Tic tac toe,我不确定我的其余代码是否正确(我显然还没有完成)但我认为问题在于 {{1 }} 不刷新,我不知道该怎么做,所以如何刷新框架?
JFrame
package pack1;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Gui {
public Gui() {
Var.jf = new JFrame();
Var.jf.setSize(Var.screenwidth,Var.screenheight);
Var.button1 = new JButton(Var.arr[Var.a]);
Var.jf.add(Var.button1);
Var.button2 = new JButton(Var.arr[Var.b]);
Var.jf.add(Var.button2);
Var.button3 = new JButton(Var.arr[Var.c]);
Var.jf.add(Var.button3);
Var.button4 = new JButton(Var.arr[Var.d]);
Var.jf.add(Var.button4);
Var.button5 = new JButton(Var.arr[Var.e]);
Var.jf.add(Var.button5);
Var.button6 = new JButton(Var.arr[Var.f]);
Var.jf.add(Var.button6);
Var.button7 = new JButton(Var.arr[Var.g]);
Var.jf.add(Var.button7);
Var.button8 = new JButton(Var.arr[Var.h]);
Var.jf.add(Var.button8);
Var.button9 = new JButton(Var.arr[Var.i]);
Var.jf.add(Var.button9);
Var.jf.setLayout(new GridLayout(3,3,10,10));
Var.button1.addActionListener(new KeyListiner());
Var.jf.setTitle("Tic tac toe");
Var.jf.setVisible(true);
Var.jf.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
Var.jf.setLayout(null);
Var.jf.setLocationRelativeto(null);
Var.jf.setResizable(false);
}
}
package pack1;
import javax.swing.*;
public class Var {
static JFrame jf;
static JButton button1;
static JButton button2;
static JButton button3;
static JButton button4;
static JButton button5;
static JButton button6;
static JButton button7;
static JButton button8;
static JButton button9;
static int a = 2;
static int b = 2;
static int c = 2;
static int d = 2;
static int e = 2;
static int f = 2;
static int g = 2;
static int h = 2;
static int i = 2;
static int screenwidth = 900,screenheight = 900;
static String[]arr = new String[3];{
arr[0] = "X";
arr[1] = "O";
arr[2] = " ";
}}
如果我没有正确解释某些事情或类似的事情,请告诉我。
解决方法
您可能有多个按钮,但其中任何一个都有一个键侦听器。 这意味着您必须将焦点移到一个按钮上并按下一个键。 棘手,因为 UI 并不表示这种限制。
尝试用事件驱动的方法来解决这个问题。将 ActionListener 附加到每个按钮。在这个 actionlistener 中,您可以根据需要更改板,然后调用 repaint() 方法(它不会真正重绘,而是标记要重绘的组件),然后退出您的方法。除非您退出在 Event Dispatcher Thread 上运行的方法,否则不会发生 UI 更新。
如果您想在 UI 更新时继续做您的工作,您需要创建自己的线程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。