在几个JTabbedPane中如何设置显示的序号? 向Frame中加panle时总有变量名吧,可以通过变量名来访问,我做的有5个panel,相互显示没问题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 hyhu(先飞笨鸟),你可能没有看清我的问题吧? 没有输入不切换,信息提示,下面的不会弹出两次啊。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); //} } }} kypfos(大学里没有回忆),你在那两个panel上再分别加一个JTabbedPane,是一下。 kypfos(大学里没有回忆) ,你的程序中在显示message前有判断:if(tp.getSelectedIndex()==1 && tf.getText().equals(""))你却掉判断后,试试。 if(tp.getSelectedIndex()==1 && tf.getText().equals(""))为什么要去掉判断呢?panel里又加上JTabbedPane,这样不太好吧。 kypfos(大学里没有回忆) ,我的JTabbedPane是有三层的,所以panel里又加上JTabbedPane。至于去掉判断,你在tp.getSelectedIndex()时,会得到0和1两种情况,你不去掉判断,等于1的情况被过滤掉了,当然只出一次message。实际上,我的程序中,stateChanged会被执行4次,我就是想不出原因,才到这里提问的,我怕别人误解,所以才说stateChanged被执行了两次。 kypfos(大学里没有回忆) ,怎么加条件,怎么判断? 加try {throw new Exception();}catch(Exception e){e.printStackTrace();}打印看看分别是哪里调用的。是不是你自己add listener加了两次? Acylas(Acylas) ,不会是加了两次的这种低级错误。 if(tp.getSelectedIndex()==1 && tf.getText().equals(""))像这样加条件判断或者不妨适时的加监听、移除监听addChangeListener(thisremoveChangeListener(this) 请教一个问题,关于读取文件,传递的是对象,附代码...在线等 java优先级问题 actionPerformed 简单问题,如何建立对象??? JAVA开源项目--问吧 现在正在招募人员 【接力】:可用分多了,顶Eclipse来了,增加人气,顺便问问题,回答者都有分【3】 JList问题 谁知道,ResultSet怎么序列化或转换成其他流方式进行传输 简单问题,急急急!!! 送分!!! 调试时为何无法跟踪入方法内部? 做一次好人!《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)