Java 如何使用单独的方法隐藏JButton并在新类中调用
我知道我做错了什么,但我不知道是什么。我想用一个方法将两个jbutton的可见性设置为false,用另一个方法将其设置为true。然后我想调用另一个类中的方法。我做错了什么Java 如何使用单独的方法隐藏JButton并在新类中调用,java,Java,我知道我做错了什么,但我不知道是什么。我想用一个方法将两个jbutton的可见性设置为false,用另一个方法将其设置为true。然后我想调用另一个类中的方法。我做错了什么 private static JButton draw; private static JButton pick; private JTextField tf; public gui() { super("title"); setLayout(new FlowLayout()); draw =
private static JButton draw;
private static JButton pick;
private JTextField tf;
public gui() {
super("title");
setLayout(new FlowLayout());
draw = new JButton("Draw"); //makes a new button to click.
draw.addActionListener( //MAKES NEW INNER CLASS TO DEFINE WHAT draw DOES
new ActionListener() {
public void actionPerformed(ActionEvent event) { //checks if clicked.
draw.setVisible(false);
pick.setVisible(false);
cards.select = 0;
System.out.println(cards.select);
}
}
);
pick = new JButton("Pick"); //makes a new button to click.
pick.addActionListener( //MAKES NEW INNER CLASS TO DEFINE WHAT pick DOES
new ActionListener() {
public void actionPerformed(ActionEvent event) { //checks if clicked.
pick.setVisible(false);
draw.setVisible(false);
cards.select = 1;
System.out.println(cards.select);
}
}
);
tf = new JTextField("lol", 20); //sets size and text
add(tf);
add(draw);
add(pick);
}
public static void addDP() {
pick.setVisible(true);
draw.setVisible(true);
}
public static void removeDP() {
pick.setVisible(false);
draw.setVisible(false);
}
类调用该方法:
gui add = new gui();
add.addDP();
我觉得这与静态方法有关,但当我将该方法设置为非静态时,它会说我无法更改可见性。您是否记得调用该函数以隐藏事件调度线程(EDT)中的按钮 下面是一个完整的工作示例,我调用一个方法来隐藏另一个对象的按钮。请注意,它是在EDT内部完成的(使用SwingUtilities):
你也能为我们提供来电者课程吗?谢谢!不过我现在有一个新问题。在主方法中,HideButtonGui=new HideButtonGui()之后;gui.go();-我想运行更多的代码,但它无法运行。为什么呢?(对不起,我是JFrame的新手)我有一个完整的名为“cards”的程序来运行纸牌游戏。它定义int、makewhile循环等。我之所以制作这个GUI是为了纸牌游戏。
import javax.swing.*;
import java.util.concurrent.TimeUnit;
public class HideButtonGui
{
private JFrame myFrame;
private PanelWithButtons comp;
public HideButtonGui() {
setupGui();
}
private void setupGui() {
myFrame = new JFrame();
comp = new PanelWithButtons();
myFrame.getContentPane().add(comp.getPanel());
myFrame.setSize(400, 300);
myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
HideButtonGui gui = new HideButtonGui();
gui.go();
}
public void go() {
SwingUtilities.invokeLater(() -> myFrame.setVisible(true));
try {
TimeUnit.SECONDS.sleep(5);
/*
This is me calling a function from another class.
That function hides the buttons.
Notice that all interaction with GUI elements is done
in the Event Dispatch Thread.
*/
SwingUtilities.invokeLater(() -> comp.hideButtons());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class PanelWithButtons {
private JButton drawBtn;
private JButton pickBtn;
private JPanel myPanel;
private int count = 0;
public PanelWithButtons() {
setupGui();
}
private void setupGui() {
drawBtn = new JButton("Draw");
pickBtn = new JButton("Pick");
myPanel = new JPanel();
myPanel.add(drawBtn);
myPanel.add(pickBtn);
drawBtn.addActionListener(evt -> hideButtonClicked());
pickBtn.addActionListener(evt -> pickButtonClicked());
}
private void pickButtonClicked() {
hideButtons();
count = 1;
System.out.println(count);
}
private void hideButtonClicked() {
hideButtons();
count = 0;
System.out.println(count);
}
public void hideButtons() {
drawBtn.setVisible(false);
pickBtn.setVisible(false);
}
public void showButtons() {
drawBtn.setVisible(true);
pickBtn.setVisible(true);
}
public JPanel getPanel() {
return myPanel;
}
}