看下这2个类,刚开始运行不报错,可是当下拉列表选中学校是,就出现了个IllegalComponentStateException,the frame is displayable.第1个:
package umis;import javax.swing.*;
import java.awt.*;
import java.net.URL;
import java.awt.event.*; public class UniversityInfoFrm extends JFrame implements Runnable,ActionListener
{
private JPanel contentPane;
private JLabel lblTitle = new JLabel();
private JLabel lblInfo = new JLabel();
private JButton btnExit = new JButton();
private JLabel lblImage=new JLabel();
private Thread th;
private Image imag;
private String filename1="images/UniversityInfo/1.jpg";
private String filename2="images/UniversityInfo/2.jpg";
private String filename3="images/UniversityInfo/3.jpg";
private String filename4="images/UniversityInfo/4.jpg";
private String info=null;
private JComboBox cmbCollege = new JComboBox();
public UniversityInfoFrm()
{
initial(true);
}
private void initial(boolean flag)
{
info="校园占地面积661万多平方米,校舍建筑面积近340";
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
this.setSize(new Dimension(600, 450));
this.setTitle("Frame Title");
//this.setResizable(false);
lblTitle.setFont(new java.awt.Font("宋体", Font.BOLD, 20));
lblTitle.setText("学校简介");
lblTitle.setBounds(new Rectangle(235, 12, 150, 48));
lblImage.setBounds(new Rectangle(31, 70, 200, 150));
lblInfo.setVerticalAlignment(SwingConstants.TOP);
lblInfo.setText("<html>"+info+"</html>");
lblInfo.setBounds(new Rectangle(254, 70, 317, 289));
cmbCollege.setBounds(new Rectangle(31, 261, 120,33));
btnExit.setBounds(new Rectangle(450, 378, 81, 30));
btnExit.setText("关闭");
btnExit.addActionListener(this);
if(flag==true)
{
cmbCollege.setFont(new java.awt.Font("宋体",Font.PLAIN,16));
cmbCollege.addItem("学校");
cmbCollege.addItem("文学院");
cmbCollege.addItem("理学院");
cmbCollege.addItem("化工学院");
cmbCollege.addItem("美术学院");
cmbCollege.addItem("音乐学院");
cmbCollege.addItem("体育学院");
cmbCollege.addItem("外语学院");
contentPane.add(cmbCollege);
cmbCollege.addActionListener(this);
if(th==null)
{
th=new Thread(this);
th.start();
}
}
contentPane.add(lblTitle);
contentPane.add(lblInfo);
contentPane.add(lblImage);
contentPane.add(btnExit);
this.setUndecorated(true);
this.setLocationRelativeTo(this);
this.setVisible(true);
}
public void run()
{
for(int i=0;i<4;i=(i+1)%4)
{
try{
if(i==0)
{
imag=Toolkit.getDefaultToolkit().getImage(filename1);
}
else if(i==1)
{
imag=Toolkit.getDefaultToolkit().getImage(filename2);
}
else if(i==2)
{
imag=Toolkit.getDefaultToolkit().getImage(filename3);
}else
{
imag=Toolkit.getDefaultToolkit().getImage(filename4);
}
lblImage.setIcon(new ImageIcon(imag));
repaint();
Thread.sleep(2000);
}catch(Exception e)
{
e.printStackTrace();
}
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
String college=cmbCollege.getSelectedItem().toString();
if(cmd.equals("关闭"))
{
this.dispose();
return;
}else
{
if(college.equals("文学院"))
{
info="在本校的历史上,文科曾经鼎盛一时。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("文学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/文学院.jpg"));
}else if(college.equals("理学院"))
{
info="理学院下设六个系:数学系、物理科学与技术系、应用化学系、生物科学与技术系、统计学系、工程结构与力学系。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("理学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/理学院.jpg"));
}else if(college.equals("化工学院"))
{
info="化学化工学院是本校规模最大的学院之一";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("化工学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/化工学院.jpg"));
}else if(college.equals("美术学院"))
{
info="学校现已建成设计与美术两大学科体系、全院本科层次开设六个专业,十八个专业方向。
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("美术学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/美术学院.jpg"));
}else if(college.equals("音乐学院"))
{
info="音乐学院一直以其雄厚的师资力量。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("音乐学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/音乐学院.jpg"));
}else if(college.equals("外语学院"))
{
info="外国语学院是培养高素质、高水平、复合型外语人才的重要基地.";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("外语学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/外国语.jpg"));
}else if(college.equals("体育学院"))
{
info="体育学院现设体育系、运动系、公共体育部、继续教育中心。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("体育学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/体育学院.jpg"));
}else if(college.equals("学校"))
{
this.initial(false);
lblImage.setIcon(new ImageIcon("images/UniversityInfo/学校.jpg"));
}else
{
}
}
}
}第2个:
package umis;public class Start
{
public static void main(String[] args)
{
new UniversityInfoFrm();
}
}
package umis;import javax.swing.*;
import java.awt.*;
import java.net.URL;
import java.awt.event.*; public class UniversityInfoFrm extends JFrame implements Runnable,ActionListener
{
private JPanel contentPane;
private JLabel lblTitle = new JLabel();
private JLabel lblInfo = new JLabel();
private JButton btnExit = new JButton();
private JLabel lblImage=new JLabel();
private Thread th;
private Image imag;
private String filename1="images/UniversityInfo/1.jpg";
private String filename2="images/UniversityInfo/2.jpg";
private String filename3="images/UniversityInfo/3.jpg";
private String filename4="images/UniversityInfo/4.jpg";
private String info=null;
private JComboBox cmbCollege = new JComboBox();
public UniversityInfoFrm()
{
initial(true);
}
private void initial(boolean flag)
{
info="校园占地面积661万多平方米,校舍建筑面积近340";
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
this.setSize(new Dimension(600, 450));
this.setTitle("Frame Title");
//this.setResizable(false);
lblTitle.setFont(new java.awt.Font("宋体", Font.BOLD, 20));
lblTitle.setText("学校简介");
lblTitle.setBounds(new Rectangle(235, 12, 150, 48));
lblImage.setBounds(new Rectangle(31, 70, 200, 150));
lblInfo.setVerticalAlignment(SwingConstants.TOP);
lblInfo.setText("<html>"+info+"</html>");
lblInfo.setBounds(new Rectangle(254, 70, 317, 289));
cmbCollege.setBounds(new Rectangle(31, 261, 120,33));
btnExit.setBounds(new Rectangle(450, 378, 81, 30));
btnExit.setText("关闭");
btnExit.addActionListener(this);
if(flag==true)
{
cmbCollege.setFont(new java.awt.Font("宋体",Font.PLAIN,16));
cmbCollege.addItem("学校");
cmbCollege.addItem("文学院");
cmbCollege.addItem("理学院");
cmbCollege.addItem("化工学院");
cmbCollege.addItem("美术学院");
cmbCollege.addItem("音乐学院");
cmbCollege.addItem("体育学院");
cmbCollege.addItem("外语学院");
contentPane.add(cmbCollege);
cmbCollege.addActionListener(this);
if(th==null)
{
th=new Thread(this);
th.start();
}
}
contentPane.add(lblTitle);
contentPane.add(lblInfo);
contentPane.add(lblImage);
contentPane.add(btnExit);
this.setUndecorated(true);
this.setLocationRelativeTo(this);
this.setVisible(true);
}
public void run()
{
for(int i=0;i<4;i=(i+1)%4)
{
try{
if(i==0)
{
imag=Toolkit.getDefaultToolkit().getImage(filename1);
}
else if(i==1)
{
imag=Toolkit.getDefaultToolkit().getImage(filename2);
}
else if(i==2)
{
imag=Toolkit.getDefaultToolkit().getImage(filename3);
}else
{
imag=Toolkit.getDefaultToolkit().getImage(filename4);
}
lblImage.setIcon(new ImageIcon(imag));
repaint();
Thread.sleep(2000);
}catch(Exception e)
{
e.printStackTrace();
}
}
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
String college=cmbCollege.getSelectedItem().toString();
if(cmd.equals("关闭"))
{
this.dispose();
return;
}else
{
if(college.equals("文学院"))
{
info="在本校的历史上,文科曾经鼎盛一时。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("文学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/文学院.jpg"));
}else if(college.equals("理学院"))
{
info="理学院下设六个系:数学系、物理科学与技术系、应用化学系、生物科学与技术系、统计学系、工程结构与力学系。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("理学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/理学院.jpg"));
}else if(college.equals("化工学院"))
{
info="化学化工学院是本校规模最大的学院之一";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("化工学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/化工学院.jpg"));
}else if(college.equals("美术学院"))
{
info="学校现已建成设计与美术两大学科体系、全院本科层次开设六个专业,十八个专业方向。
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("美术学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/美术学院.jpg"));
}else if(college.equals("音乐学院"))
{
info="音乐学院一直以其雄厚的师资力量。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("音乐学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/音乐学院.jpg"));
}else if(college.equals("外语学院"))
{
info="外国语学院是培养高素质、高水平、复合型外语人才的重要基地.";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("外语学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/外国语.jpg"));
}else if(college.equals("体育学院"))
{
info="体育学院现设体育系、运动系、公共体育部、继续教育中心。";
lblInfo.setText("<html>"+info+"</html>");
lblTitle.setText("体育学院简介");
th.stop();
lblImage.setIcon(new ImageIcon("images/UniversityInfo/体育学院.jpg"));
}else if(college.equals("学校"))
{
this.initial(false);
lblImage.setIcon(new ImageIcon("images/UniversityInfo/学校.jpg"));
}else
{
}
}
}
}第2个:
package umis;public class Start
{
public static void main(String[] args)
{
new UniversityInfoFrm();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货