向Frame中加panle时总有变量名吧,可以通过变量名来访问,我做的有5个panel,相互显示没问题!
解决方案 »
- 打印出2--1000的完全数
- 菜鸟求助 sql语句处理
- java绘图程序的遗留问题(上贴未解决,请各位一定帮忙!)
- java 开发邮件的思路及源代码?谁做过给点思路,有代码的也帖上来吧!
- 初学者在吐血,请有心人帮忙!
- 《Java 2 图形设计卷Ⅱ:SWING》在网上找的怎么都是不全的啊?
- Baidu后无果,来此求助。Java连接Oracle问题
- JAVA的应用方向
- 50分(别嫌少求段代码)请进去看看。。。。谢谢。。
- 在java中,如何将一个字符串如“技术性问题”转化成十六进制,反过来,如果有一个十六进制的字符串如“3F3F3A”,又如何将它还原成字符串
- 做一次好人!《java2参考大全(第4)》下载!
- 祝福最最最最亲爱的 Leemaasn 星光灿烂。。
import javax.swing.*;
import javax.swing.event.*;public class TestTabbedPane extends JDialog
implements ChangeListener{
JPanel p1,p2;
JTabbedPane tp;
JTextField tf;
public TestTabbedPane(){
tp=new JTabbedPane();
p1=new JPanel();
p2=new JPanel();
tp.addTab("First",p1);
tp.addTab("Second",p2);
tf=new JTextField(10);
p1.add(tf);
this.setSize(320,240);
this.getContentPane().add(tp);
tp.addChangeListener(this);
}
public static void main(String[] args){
new TestTabbedPane().setVisible(true);
}
public void stateChanged(ChangeEvent e) {
if(tp.getSelectedIndex()==1 && tf.getText().equals("")){
int i=JOptionPane.showConfirmDialog(null,"Blank","",JOptionPane.ERROR_MESSAGE);
//if(i==JOptionPane.CANCEL_OPTION){
tp.setSelectedIndex(0);
//}
}
}}
if(tp.getSelectedIndex()==1 && tf.getText().equals(""))
你却掉判断后,试试。
至于去掉判断,你在tp.getSelectedIndex()时,会得到0和1两种情况,你不去掉判断,等于1的情况被过滤掉了,当然只出一次message。实际上,我的程序中,stateChanged会被执行4次,我就是想不出原因,才到这里提问的,我怕别人误解,所以才说stateChanged被执行了两次。
try {throw new Exception();}catch(Exception e){e.printStackTrace();}
打印看看分别是哪里调用的。
是不是你自己add listener加了两次?
像这样加条件判断或者不妨适时的加监听、移除监听addChangeListener(this
removeChangeListener(this)