我有一个按钮在另一个类中运行一个函数。按钮单击事件处理如下:
JPanel ne=new JPanel();
JButton startButton=new JButton("START");
public void actionPerformed(ActionEvent e)
{
System.out.println("Welcome to Guess the number Game");
System.out.println("You have 3 chances to guess a number between 0 and 10 excluding 10");
ne.remove(startButton);
gamer2 game=new gamer2();
game.generatenum();
}
JButton startButton
被添加到 JPanel ne
。单击按钮后,actionPerformed(ActionEvent e)
运行并且按钮被应该从 JPanel 中删除。但是按钮会保留在那里,直到整个程序运行完毕。有人可以帮我解决这个问题吗?
JFrame 的完整代码:
package test;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.Border;
public class test3 implements ActionListener {
JButton p=new JButton("START");
JPanel ne=new JPanel();
public void create()
{
Dimension s=new Dimension(400,400);
JFrame l=new JFrame();
l.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
l.setSize(s);
l.setResizable(true);
Dimension s1=new Dimension(400,200);
Dimension s2=new Dimension(400,100);
JPanel me=new JPanel();
JLabel kingsman=new JLabel ("GUESS THE KING'S NUMBER!");
kingsman.setFont(new Font("Serif", Font.BOLD, 45));
JPanel commonPane=new JPanel();
BoxLayout n1=new BoxLayout(commonPane,1);
commonPane.setLayout(n1);
p.setFont(new Font("Serif", Font.BOLD, 40));
p.setPreferredSize(s1);
JTextField tf=new JTextField();
tf.setFont(new Font("Serif", Font.BOLD, 45));
Border border = BorderFactory.createLineBorder(Color.YELLOW, 5);
tf.setBorder(border);
tf.setPreferredSize(s2);
JPanel cn=new JPanel();
cn.add(tf);
//l.add(p);
me.add(kingsman);
ne.add(p);
commonPane.add(me);
commonPane.add(ne);
commonPane.add(cn);
l.add(commonPane);
l.setVisible(true);
p.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
System.out.println("Welcome to Guess the number Game");
System.out.println("You have 3 chances to guess a number between 0 and 10 excluding 10");
ne.remove(p);
ne.updateUI();
gamer2 game=new gamer2();
game.generatenum();
}
public static void main(String args[])
{
test3 ob=new test3();
ob.create();
}
}
最佳答案
GUI 上的所有更新(由 ne.remove(p);
和 ne.updateUI();
发起)将在之后 actionPerformed(..)
方法结束。因此 game.generatenum();
应该只调出新的 GUI 并尽快返回。
关于java - 在执行完整程序之前按钮不会被移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488901/