导航:
论坛 -> 网络通讯
斑竹:liumazi,sephil
作者:
2004/3/1 1:10:43
标题:
急!生成的jar文件老是报错,找不到原因(java问题)
浏览:2088
加入我的收藏
楼主:
源文件: E:\test\abc\SliderDemo1.java =============================== pckage abc; import javax.swing.*;//ChangeEvent事件是属于Swing事件,若要处理此事件必须将import swing的event package进来. import javax.swing.border.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.*; public class SliderDemo1 implements ChangeListener { JFrame f = null; JSlider slider1; JSlider slider2; JSlider slider3; JLabel label1; JLabel label2; JLabel label3; public SliderDemo1() { f = new JFrame("JSlider Example"); Container contentPane = f.getContentPane(); JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayout(2,1)); slider1 = new JSlider();//建立一个默认的JSlider组件. label1 = new JLabel("目前刻度:"+slider1.getValue()); panel1.add(label1); panel1.add(slider1); panel1.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(),"Slider 1",TitledBorder.LEFT, TitledBorder.TOP)); JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayout(2,1)); /*下面五行程序建立一个水平方向的JSlider组件,并设置其取大值,最小值,初始值与延伸区值,所谓的延伸区值我们在前面 *JScrollBar中也提到过,意思是限制JSlider刻度可变动的范围,也就是说延伸区就像是一个障碍区,是无法通行的.延伸区 *设得越大,刻度可变动的范围就越小.例如若minimum值设为0,maximan值设为100,而extent值设为0,则JSlider刻度可变动 *的区域大小为100-50-0=50刻度(从0-50). */ slider2 = new JSlider(JSlider.HORIZONTAL); slider2.setMinimum(0); slider2.setMaximum(100); slider2.setValue(30); slider2.setExtent(50); label2 = new JLabel("目前刻度:"+slider2.getValue()); panel2.add(label2); panel2.add(slider2); panel2.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(),"Slider 2",TitledBorder.LEFT, TitledBorder.TOP)); JPanel panel3 = new JPanel(); panel3.setLayout(new GridLayout(2,1)); //下面两行建立一个具有最大最小值的JSlider组件,并设置此JSlider组件为垂直方向. slider3 = new JSlider(20,80); slider3.setOrientation(JSlider.VERTICAL); label3 = new JLabel("目前刻度:"+slider3.getValue()); panel3.add(label3); panel3.add(slider3); panel3.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(),"Slider 3",TitledBorder.LEFT, TitledBorder.TOP)); slider1.addChangeListener(this); slider2.addChangeListener(this); slider3.addChangeListener(this); panel1.setPreferredSize(new Dimension(300,100)); panel2.setPreferredSize(new Dimension(300,100)); panel3.setPreferredSize(new Dimension(150,200)); GridBagConstraints c; int gridx,gridy,gridwidth, gridheight,anchor,fill,ipadx,ipady; double weightx,weighty; Insets inset; GridBagLayout gridbag = new GridBagLayout(); contentPane.setLayout(gridbag); gridx=0; //第0行 gridy=0; //第0列 gridwidth = 2; //占两单位宽度 gridheight = 1; //占一单位高度 weightx = 0; //窗口增大时组件宽度增大比率0 weighty = 0; //窗口增大时组件高度增大比率0 anchor = GridBagConstraints.CENTER; //容器大于组件size时将组件 //置于容器中央 fill = GridBagConstraints.BOTH; //窗口拉大时会填满水平与垂 //直空间 inset = new Insets(0,0,0,0); //组件间间距 ipadx = 0; //组件内水平宽度 ipady = 0; //组件内垂直高度 c = new GridBagConstraints(gridx,gridy,gridwidth,gridheight, weightx,weighty,anchor,fill,inset,ipadx,ipady); gridbag.setConstraints(panel1,c); contentPane.add(panel1); gridx=0; gridy=1; c = new GridBagConstraints(gridx,gridy,gridwidth,gridheight, weightx,weighty,anchor,fill,inset,ipadx,ipady); gridbag.setConstraints(panel2,c); contentPane.add(panel2); gridx=2; gridy=0; gridwidth = 1; //占一单位宽度 gridheight = 2; //占两单位高度 c = new GridBagConstraints(gridx,gridy,gridwidth,gridheight, weightx,weighty,anchor,fill,inset,ipadx,ipady); gridbag.setConstraints(panel3,c); contentPane.add(panel3); f.pack(); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { new SliderDemo1(); } //处理ChangeEvent事件,当用户移动滑动杆时,label上的值会随着用户的移动而改变. public void stateChanged(ChangeEvent e) { if ((JSlider)e.getSource() == slider1) label1.setText("目前刻度:"+slider1.getValue()); if ((JSlider)e.getSource() == slider2) label2.setText("目前刻度:"+slider2.getValue()); if ((JSlider)e.getSource() == slider3) label3.setText("目前刻度:"+slider3.getValue()); } } ====================================================== 我用: E:\JBuilder8\jdk1.4\bin\javac e:\test\abc\SliderDemo1.java 编译,编译成功! 生成 E:\test\abc\SliderDemo1.class 文件 我用 E:\JBuilder8\jdk1.4\bin\javaw -classpath e:\test abc.SliderDemo1 执行程序,程序能够正常运行! 问题关键是如何才能生成jar文件: 我的方法是: 1、建立 E:\test\abc\manifest.mf 文件 文件的内容是:Main-Class: abc.SliderDemo1 2、我用 E:\JBuilder8\jdk1.4\bin\jar cvfm e:\test\abc\SliderDemo1.jar e:\test\abc\manifest.mf e:\test\abc\SliderDemo1 生成了e:\test\abc\SliderDemo1.jar 文件 当时我非常高兴,因为只要点击e:\test\abc\SliderDemo1.jar 这个文件,就可以看到程序运行效果,可是程序没有跑起来,提示: 我真不知道我哪里设置错了。请熟悉java的朋友帮我找出错误! >>>所有相关文件下载(SliderDemo1.java , SliderDemo1.class ,SliderDemo1.jar)<<<
----------------------------------------------
青云论坛