java小程序 按钮事件显示panel,为什么我要最大化一下才能显示
publicclasskaoshi2extendsAppletimplementsActionListener{Buttonb1=newButton("添加社员");Bu...
public class kaoshi2 extends Applet implements ActionListener{ Button b1 = new Button("添加社员"); Button b5 = new Button("添加信息"); Panel pall = new Panel(new BorderLayout()); Panel p0 = new Panel(); Panel p1 = new Panel(); Label l1 = new Label("社员代码:"); Label l2 = new Label("社员名称:"); Label l3 = new Label("社员生日:"); TextField tf1 = new TextField(4); TextField tf2 = new TextField(4); TextField tf3 = new TextField(4); public void init(){ b1.addActionListener(this); p0.add(b1); p1.add(l1); p1.add(tf1); p1.add(l2); p1.add(tf2); p1.add(l3); p1.add(tf3); p1.add(b5); pall.add(p0,BorderLayout.NORTH); this.add(pall); this.setVisible(true); } public void actionPerformed(ActionEvent aa1) { String ss1 = aa1.getActionCommand(); if(ss1=="添加社员"){ repaint(); pall.add(p1,BorderLayout.SOUTH); p1.setVisible(true); } }}
展开
展开全部
因为你最大化applet等于重新布置applet中的组件,而validate();语句有相同的作用。
所以在actionPerformed函数中,注释掉repaint();和p1.setVisible(true);语句,加上
validate();语句就行了。
完整的Java语言程序如下:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class kaoshi2 extends Applet implements ActionListener{
Button b1 = new Button("添加社员");
Button b5 = new Button("添加信息");
Panel pall = new Panel(new BorderLayout());
Panel p0 = new Panel();
Panel p1 = new Panel();
Label l1 = new Label("社员代码:");
Label l2 = new Label("社员名称:");
Label l3 = new Label("社员生日:");
TextField tf1 = new TextField(4);
TextField tf2 = new TextField(4);
TextField tf3 = new TextField(4);
public void init(){
b1.addActionListener(this);
p0.add(b1);
p1.add(l1);
p1.add(tf1);
p1.add(l2);
p1.add(tf2);
p1.add(l3);
p1.add(tf3);
p1.add(b5);
pall.add(p0,BorderLayout.NORTH);
this.add(pall);
this.setVisible(true);
}
public void actionPerformed(ActionEvent aa1) {
String ss1 = aa1.getActionCommand();
if(ss1=="添加社员"){
//repaint();
pall.add(p1,BorderLayout.SOUTH);
//p1.setVisible(true);
validate();//这句将重新布置applet中的组件
}
}
}
2017-10-10
展开全部
public void init(){
p1.add(l1); p1.add(tf1); p1.add(l2); p1.add(tf2); p1.add(l3); p1.add(tf3); p1.add(b5);
p0.add(b1);
pall.add(p0, BorderLayout.NORTH);
this.add(pall);
this.setVisible(true);
b1.addActionListener(this);
}
p1.add(l1); p1.add(tf1); p1.add(l2); p1.add(tf2); p1.add(l3); p1.add(tf3); p1.add(b5);
p0.add(b1);
pall.add(p0, BorderLayout.NORTH);
this.add(pall);
this.setVisible(true);
b1.addActionListener(this);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public void actionPerformed(ActionEvent aa1) {
String ss1 = aa1.getActionCommand();
if (ss1 == "添加社员") {
pall.add(p1, BorderLayout.SOUTH);
this.validate();
}
}
此方法作以上更改即可
validate
public void validate()
验证此容器及其所有子组件。
使用 validate 方法会使容器再次布置其子组件。已经显示容器后,在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与布局相关的信息),应该调用上述方法。
如果此 Container 无效,则此方法将调用 validateTree 方法,并将此
Container 标记为有效。否则不执行任何动作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询