java JTabbedPane 页的增加与删除问题 描述: 这是一个网上的参考的例子,我运行的时候,出现以下问题,请知道的朋友解一下 1、进行程序点删除再点增加,dos窗口会提示出很多信息,这些信息是起什么作用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 晕,点了一下enter ,就发布出来了,还没有说完! 2、点了删除几次后,再点增加,标签不会变化,我试了试,要点好几次(这个次数和我删除的次数一致),标签才会变化原代码: import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class JTabbedPane2 implements ActionListener,ChangeListener{ int index=0; int newNumber=1; JTabbedPane tabbedPane=null; public JTabbedPane2(){ JFrame f=new JFrame("JTabbedPane2"); Container contentPane=f.getContentPane(); contentPane.setLayout(new BorderLayout()); //JLabel label1=new JLabel(new ImageIcon("jpg\\tupian.jpg")); JLabel label1=new JLabel("flower.jpg"); JPanel panel1=new JPanel(); panel1.add(label1); JLabel label2=new JLabel("Label2",JLabel.CENTER); label2.setBackground(Color.pink); label2.setOpaque(true); JPanel panel2=new JPanel(); panel2.add(label2); JLabel label3=new JLabel("Label3",JLabel.CENTER); label3.setBackground(Color.yellow); label3.setOpaque(true); JPanel panel3=new JPanel(); panel3.add(label3); JButton b1=new JButton("删除标签"); b1.addActionListener(this); contentPane.add(b1,BorderLayout.WEST); JButton b=new JButton("新增标签"); b.addActionListener(this); JPanel panel4=new JPanel(); //panel4.setLayout(new setLayout()); panel4.add(b1); panel4.add(b); tabbedPane=new JTabbedPane(); tabbedPane.setTabPlacement(JTabbedPane.TOP); tabbedPane.addChangeListener(this); tabbedPane.addTab("picture",null,panel1,"图案"); tabbedPane.addTab("Label2",panel2); tabbedPane.addTab("label3",null,panel3,"label"); //tabbedPane.setEnabledAt(2,false); contentPane.add(panel4,BorderLayout.SOUTH); contentPane.add(tabbedPane,BorderLayout.CENTER); f.pack(); f.setSize(300,200); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ //System.exit(0); ((Window)e.getComponent()).dispose();// 关闭当前窗口 } }); f.setVisible(true); } public void stateChanged(ChangeEvent e){ /* if(index!=tabbedPane.getSelectedIndex()) { if (index<tabbedPane.getTabCount()-1) tabbedPane.setEnabledAt(index+1,true); } */ index=tabbedPane.getSelectedIndex(); } public void actionPerformed(ActionEvent e){ if (e.getActionCommand().equals("新增标签")){ JPanel pane1=new JPanel(); JLabel label4=new JLabel("new Label"+newNumber,JLabel.CENTER); label4.setOpaque(true); pane1.add(label4); tabbedPane.addTab("new"+newNumber,pane1); tabbedPane.setEnabledAt(newNumber+2,true); System.out.println(newNumber); newNumber++; tabbedPane.validate(); //System.out.println(newNumber); } if (e.getActionCommand().equals("删除标签")){ //tabbedPane.removeAll(); tabbedPane.remove(tabbedPane.getSelectedIndex()); //System.out.println(tabbedPane.getTabCount()); System.out.println(newNumber); tabbedPane.validate(); } } public static void main(String[] args){ new JTabbedPane2(); } } 1.出現那么多字 是因為這句tabbedPane.setEnabledAt(newNumber + 2, true);值越界了2.你把上面這句注釋掉 應該就可以了 java static代码块中的成员变量问题 请教一个计算百分比数字的方法 问一下关于哈夫曼编码的问题。 我一直不太明白的一个关于继承方面的问题 送分,求Gmail帐号 一个子类从父类继承所有的方法和变量,但它不继承构造函数 急,请高手指点,关于读取文件的问题 java怎么开根?例如求64的5次方根 怎么给回答问题的人加分? 关于在几个VM中的session问题? webwork不知道怎么回事报错了,请各位大侠帮忙看看 第一次做项目 求一个做图书管理系统的具体思路
2、点了删除几次后,再点增加,标签不会变化,我试了试,要点好几次(这个次数和我删除的次数一致),标签才会变化原代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;public class JTabbedPane2 implements ActionListener,ChangeListener{
int index=0;
int newNumber=1;
JTabbedPane tabbedPane=null;
public JTabbedPane2(){
JFrame f=new JFrame("JTabbedPane2");
Container contentPane=f.getContentPane();
contentPane.setLayout(new BorderLayout());
//JLabel label1=new JLabel(new ImageIcon("jpg\\tupian.jpg"));
JLabel label1=new JLabel("flower.jpg");
JPanel panel1=new JPanel();
panel1.add(label1);
JLabel label2=new JLabel("Label2",JLabel.CENTER);
label2.setBackground(Color.pink);
label2.setOpaque(true);
JPanel panel2=new JPanel();
panel2.add(label2);
JLabel label3=new JLabel("Label3",JLabel.CENTER);
label3.setBackground(Color.yellow);
label3.setOpaque(true);
JPanel panel3=new JPanel();
panel3.add(label3);
JButton b1=new JButton("删除标签");
b1.addActionListener(this);
contentPane.add(b1,BorderLayout.WEST);
JButton b=new JButton("新增标签");
b.addActionListener(this); JPanel panel4=new JPanel();
//panel4.setLayout(new setLayout());
panel4.add(b1);
panel4.add(b);
tabbedPane=new JTabbedPane();
tabbedPane.setTabPlacement(JTabbedPane.TOP);
tabbedPane.addChangeListener(this);
tabbedPane.addTab("picture",null,panel1,"图案");
tabbedPane.addTab("Label2",panel2);
tabbedPane.addTab("label3",null,panel3,"label");
//tabbedPane.setEnabledAt(2,false);
contentPane.add(panel4,BorderLayout.SOUTH);
contentPane.add(tabbedPane,BorderLayout.CENTER);
f.pack();
f.setSize(300,200);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
//System.exit(0);
((Window)e.getComponent()).dispose();// 关闭当前窗口
}
});
f.setVisible(true);
}
public void stateChanged(ChangeEvent e){
/* if(index!=tabbedPane.getSelectedIndex())
{
if (index<tabbedPane.getTabCount()-1)
tabbedPane.setEnabledAt(index+1,true);
}
*/
index=tabbedPane.getSelectedIndex();
}
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("新增标签")){
JPanel pane1=new JPanel();
JLabel label4=new JLabel("new Label"+newNumber,JLabel.CENTER);
label4.setOpaque(true);
pane1.add(label4);
tabbedPane.addTab("new"+newNumber,pane1);
tabbedPane.setEnabledAt(newNumber+2,true);
System.out.println(newNumber);
newNumber++;
tabbedPane.validate();
//System.out.println(newNumber);
}
if (e.getActionCommand().equals("删除标签")){
//tabbedPane.removeAll();
tabbedPane.remove(tabbedPane.getSelectedIndex());
//System.out.println(tabbedPane.getTabCount());
System.out.println(newNumber);
tabbedPane.validate();
}
}
public static void main(String[] args){
new JTabbedPane2();
}
}
值越界了
2.你把上面這句注釋掉 應該就可以了