Java 如何在内容窗格/容器中将按钮设置为不可见

Java 如何在内容窗格/容器中将按钮设置为不可见,java,swing,jbutton,actionlistener,Java,Swing,Jbutton,Actionlistener,我对Java相当陌生,我只是想通过阅读课本来自学。本教科书为小程序提供了以下代码: import java.awt.Container; import javax.swing.ImageIcon; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JLabel; import java.awt.Color; import java.awt.Container; import java.awt.Fl

我对Java相当陌生,我只是想通过阅读课本来自学。本教科书为小程序提供了以下代码:

import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SavitchCh6Prjct14 extends JApplet implements ActionListener
{

private JLabel response;
private Container contentPane;
public void init()
{
    contentPane = getContentPane();
    contentPane.setBackground(Color.WHITE);

    //Create Button:
    JButton aButton = new JButton("Push me!");
    aButton.addActionListener(this);
    //create label
    response = new JLabel("Thanks. That felt good!");
    ImageIcon smileyFaceIcon = new ImageIcon("smiley.jpg"); 
    response.setIcon(smileyFaceIcon);
    response.setVisible(false);//invisible until button is clicked.
    //Add button:
    contentPane.setLayout(new FlowLayout());
    contentPane.add(aButton);
    //Add Label
    contentPane.add(response);
}//end init
public void actionPerformed(ActionEvent e)
{
    contentPane.setBackground(Color.PINK);
    response.setVisible(true);//show label when true

}//end actionPerformed
}//end class
我的一个练习是使被点击的按钮在被点击后变得不可见

在“actionPerformed”中,位于“response.setVisible(true);”下方我尝试插入代码:
aButton.setVisible(假)


但这给了我一条错误消息,我真的不知道还需要做些什么来更改现有代码,使按钮在被单击后消失。

在performedAction方法中,您必须找到要设置的对象,因此您只需编写以下内容来代替您的方法:

 public void actionPerformed(ActionEvent e)
 {
     contentPane.setBackground(Color.PINK);
     response.setVisible(true);//show label when true

     if(e.getSource() == aButton) {
         aButton.setVisible(false);
     }

 }//end actionPerformed
但是创建一个全局按钮,因此

 private JLabel response;
 private Container contentPane;
添加按钮

 private JLabel response;
 private Container contentPane;
 public JButton aButton;
然后在init方法中,只需执行以下操作

 aButton = new JButton("Push me!");
并保持

 aButton.addActionListener(this);
这会将按钮创建为全局变量,让整个程序都可以查看它,它会在init方法中初始化按钮,它会将actionlistener添加到按钮上,然后action listener会读取按钮,如果按钮被视为源(只意味着按钮被单击或对操作作出反应)它将触发setVisible(false)方法,创建按钮使其不可见,并有望提供所需的输出


我希望这有帮助!:)

我没有做他的家庭作业。他在课本上自学,需要帮助;此外,即使我做了他的家庭作业,大部分代码都是他自己做的,他需要一些帮助,所以我帮助了他。你是否曾经需要帮助编程,或者你是来自天堂的挥霍礼物?来自地狱。。不,但是你告诉他所有的解决方案也许是更好的定位他不给洞的解决方案,这是一个观点,我认为这样他会学习,给所有的解决方案,不要只学习复制粘贴。好吧,地狱不是一个好地方。我会选择天堂,至少在那里我可以赞美我的主和救世主,但我明白你的意思。我错过了关于教科书的部分。Nachokk(粗鲁)有一点我想确保我理解这一点,而不仅仅是剪切和粘贴(这确实有效,谢谢)。主要问题是按钮在“init”部分内初始化,无法从代码中的actionPerformed方法访问。但是对于您的修复,我将其置于init部分的范围之外,并允许在任何地方对其进行操作。是这样吗?我不确定if语句的目的,所以我想确保我有这个权利。如果我有多个触发ActionEvent e的按钮,而没有看到错误的按钮,则需要if stmt?*“我对Java非常陌生,我只是想通过阅读教科书来自学。教科书为小程序提供了以下代码:“为什么要编写小程序?”?如果是老师指定的,请参考。找另一本教科书。