如何从JAVA中的操作侦听器向容器添加按钮?

如何从JAVA中的操作侦听器向容器添加按钮?,java,Java,这是我的代码。我想在按下“保存”按钮时显示一些按钮。为此,我在action listener中添加了它们。但问题是,当调用我的动作侦听器时,按钮不显示。如何解决此问题?将组件添加到已可见的容器后,必须重新验证container.revalidate()而不是试图将其设置为可见again@VinceEmigh“谢谢你,成功了。”文西又问了一个问题。容器重新验证后,如何使“保存”按钮消失?如何使按钮出现在flowlayout的下一行?此外,您应该避免使用诸如b或s之类的琐碎变量名,除非它们用于琐碎的

这是我的代码。我想在按下“保存”按钮时显示一些按钮。为此,我在action listener中添加了它们。但问题是,当调用我的动作侦听器时,按钮不显示。如何解决此问题?

将组件添加到已可见的容器后,必须重新验证
container.revalidate()
而不是试图将其设置为可见again@VinceEmigh“谢谢你,成功了。”文西又问了一个问题。容器重新验证后,如何使“保存”按钮消失?如何使按钮出现在flowlayout的下一行?此外,您应该避免使用诸如
b
s
之类的琐碎变量名,除非它们用于琐碎的目的,例如for循环的索引。取而代之的是使用具有某种意义的名称,这样代码就可以自我注释。我想知道您是否真的想使用CardLayout交换JPanel…只需将其从容器中移除:
container.remove(comp)并在之后重新验证。至于FlowLayout,老实说,我从来没有使用过它,所以我真的不能帮你(我在大多数情况下使用GridBagLayout)。您应该查看Oracle的it教程:
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class StudentDatabase extends JFrame {
    JLabel jl= new JLabel("Name:");
    JLabel jl1= new JLabel("Class");
    JLabel jl2= new JLabel("Reg number");
    JLabel jl3= new JLabel("Semester");
    JLabel jl4= new JLabel("GPA");
    public JLabel jl5= new JLabel("Semester");
    JLabel jl6= new JLabel("Credit Hours");
    JLabel jl7= new JLabel("Semester 2");
    JButton jb= new JButton("SAVE");
    String name, cLass, regn;
    JTextField jt= new JTextField("  Enter  Name");
    JTextField jt1= new JTextField("   Enter Class");
    JTextField jt2= new JTextField("  Enter  Reg number");
    JTextField jt3= new JTextField("  Enter  Semester");
    JTextField jt4= new JTextField("  GPA    ");
    JTextField jt5= new JTextField("  Enter Semester GPA");
    JTextField jt6= new JTextField("  Enter  CH");
    public Container c= this.getContentPane();
    StudentDatabase(){

        c.setLayout(new FlowLayout());
        this.setBounds(100,100,300,400);
        c.add(jl);
        c.add(jt);
        c.add(jl1);
        c.add(jt1);
        c.add(jl2);
        c.add(jt2);
        c.add(jl3);
        c.add(jt3);
        c.add(jl4);
        c.add(jt4);

        jb.addActionListener(new mal());
        name=jt.getText();
        cLass=jt1.getText();
        regn=jt2.getText();

        c.add(jb);
        this.setVisible(true);
        c.setVisible(true);


    }
    protected class mal implements ActionListener {
        String name, cLass, regn,s,g,ch;

        public void actionPerformed(ActionEvent e){

            s=jt3.getText();
            s=s.trim();
            System.out.println("abnc");
            System.out.println(s);
            if(s.equals("1")){

                c.add(jl5);
                c.add(jt5);
                c.add(jl6);
                c.add(jt6);
                c.setVisible(true);

                System.out.println(s);
                ch=jt6.getText();
                System.out.println(ch);
                jt4.setText(s);
            }

        }
    }

}