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