我是JAVA新手,向大家请教一个问题.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是JAVA新手,向大家请教一个问题.相关的知识,希望对你有一定的参考价值。

我写了下面一段源代码:
import java.awt.*;
import java.awt.event.*;

class MyFrame

public static void main(String[] args)

Frame frame=new Frame("仙剑奇侠传");

Panel panel1=new Panel();
Panel panel2=new Panel();

frame.setSize(500,400);
frame.add(panel1,"NORTH");
frame.add(panel2);

panel1.setLayout(new GridLayout(1,4));
Button button1=new Button("状态");
panel1.add(button1);
Button button2=new Button("物品");
panel1.add(button2);
Button button3=new Button("仙术");
panel1.add(button3);
Button button4=new Button("系统");
panel1.add(button4);

frame.addWindowListener(new MyWindow());

frame.setVisible(true);


class MyWindow extends WindowAdapter

public void wingowClosing(WindowEvent e)

e.getWindow().setVisible(false);
System.exit(0);


运行时,命令行窗口中出现以下信息:
Exception in thread "main" java.lang.IllegalArgumentException: cannot add to lay
out: unknown constraint: NORTH
at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:446)
at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:407)
at java.awt.Container.addImpl(Container.java:1058)
at java.awt.Container.add(Container.java:899)
at MyFrame.main(MyFrame.java:14)
Press any key to continue...
请问这是什么回事?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class MyFrame
public static void main(String[] args)
JFrame frame = new JFrame("仙剑奇侠传");
JButton button1 = new JButton("状态");
JButton button2 = new JButton("物品");
JButton button3 = new JButton("仙术");
JButton button4 = new JButton("系统");
Container c = frame.getContentPane();
c.setLayout(new BorderLayout());
Panel panel1 = new Panel();
Panel panel2 = new Panel();
panel1.setLayout(new GridLayout(1, 4));
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);
c.add(panel1, BorderLayout.NORTH);
c.add(panel2, BorderLayout.SOUTH);
frame.addWindowFocusListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);

);
frame.setSize(500, 400);
frame.setVisible(true);



有些不太对,是这个意思吗,给你改了下
参考技术A 把"NORTH"改为
BorderLayout.NORTH

因为你用的是默认的BorderLayout布局管理器,所以如果你想指定位置,就要用BorderLayout的变量
参考技术B 错在frame.add(panel1,"NORTH");
你不能把这个直接放在north,因为这不是BorderLayout!而且这是一个Panel,直接写frame.add(panel1);应该就好了

请教JAVA 问题

想请问JAVA 高手如何解决以下问题, 谢谢:
编译好JAVA 程序后,将之用JAR 指令压缩成 .jar 文件再执行后出现以下讯息。想请教该如何解决。

Failed to load Mani-Class manifestattribute from
C:\Sun\SDK\jdk\bin\cpu09\cpu09.jar
谢谢指点,但根据答复去做还是出现以下讯息:

C:\Sun\SDK\jdk\bin\cpu09>jar cvfm cpu09.jar Manifest.txt
java.io.IOException: invalid header field name: ???Main-Class
at java.util.jar.Attributes.read(Attributes.java:409)
at java.util.jar.Manifest.read(Manifest.java:167)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at sun.tools.jar.Main.run(Main.java:123)
at sun.tools.jar.Main.main(Main.java:903)

Manifest文件是要加入Main-Class: cpu09.frame.CPU09 但解压缩JAR 文件后发现 Mainfest文件没变化,而CPU09.JAR 还是不能执行。
请问要如何解决,谢谢。

你按下面的步聚操作,只要是你的类文件没问题那程序肯定可以运行。
1、建立一个文件夹,将你编译好的所有类放在这个文件夹里面。这里我们假设已经写好了一个Swing.class,那么把这个Swing.class放到这个文件夹

2、新建一个文件,文件名为manifest.mf,用记事本打开它,编辑里面的内容为Main-Class: Swing(然后按回车,记住一定要按回车,而且这里的类名不能带.class)

3、进行命令行,输入命令:jar cvfm Swing.jar manifest.mf *

看看文件夹下面是不是生成一个Swing.jar文件,如果你是用Swing或者AWT写的java程序,这时可以直接双击这个文件运行。
参考技术A 是 .jar 压缩包中 META-INF/MANIFEST.MF
文件不一样, 多了一行, Main-Class: xxxxx, 再看看出错信息, 原来是没有指定
Main-Class, 看看 jar 命令, 发现有一个参数 -m,

-m include manifest information from specified manifest file

和出错信息有点关系, 看来它要读一个配制文件. 只好照猫画虎写一个了.

[classes]$ cat myManifest
Manifest-Version: 1.0

Main-Class: pktest.PackageTest
Created-By: 1.2.2 (Sun Microsystems Inc.)

[classes]$ jar cvfm mypackage.jar myManifest pktest
added manifest
adding: pktest/(in = 0) (out= 0)(stored 0%)
adding: pktest/PackageSecond.class(in = 659) (out= 395)(deflated 40%)
adding: pktest/subpk/(in = 0) (out= 0)(stored 0%)
adding: pktest/subpk/PackageSub.class(in = 744) (out= 454)(deflated 38%)
adding: pktest/PackageTest.class(in = 1041) (out= 602)(deflated 42%)

[classes]$ java -jar mypackage.jar
Value of PackageTest is This is a Test Package
Value of PackageSecond is I am in PackageTest
Value of PackageSecond is I am in subpackage.
Value of PackageSub is I am in PackageTest

好了, 成功了, 这样就做好了一个可以直接执行的 .jar 文件.
参考技术B manifest文件有问题,

下个BlueJ,轻松搞定
http://www.bluej.org/download/download.html

或者用Ant

补充:
个人认为自己做jar有不确定性,特别是中文的系统,建议用工具,以上提供的工具都是免费的
参考技术C 我也遇到过这个问题,期待回答....

以上是关于我是JAVA新手,向大家请教一个问题.的主要内容,如果未能解决你的问题,请参考以下文章

请教大家一个有些SQL里面INNER JOIN的问题

请教Div+CSS+JS树型菜单问题,我是新手,

向大家请教几个CS问题!!

Eclipse的问题,新手请教

我是纯新手,请教node.js的js的文件应该放在哪

向朋友请教一个bootstrap的问题