天啊!世态炎凉,没法结贴!!! DrawFrame是你自己写的一个类么 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是,书不可信上次还看到一本书把javascript的内容放到java里,巨汗... DrawFrame是什么,自定义的类吧 我自己写的试了,后来把书附带的运行也是这个问题,DrawFrame 是自己定义的类,如下:import javax.swing.*;import java.awt.*;public class DrawFrame extends JFrame{ public DrawFrame(String szTitle) { setTitle(szTitle); setDefaultCloseOperation(EXIT_ON_CLOSE); setJMenuBar(menuBar); JMenu fileMenu=new JMenu("File"); JMenu drawMenu=new JMenu("Draw"); fileMenu.setMnemonic('F'); drawMenu.setMnemonic('D'); menuBar.add(fileMenu); NewMenu=fileMenu.add("New"); NewMenu.setAccelerator(KeyStroke.getKeyStroke('N',Event.CTRL_MASK)); OpenMenu=fileMenu.add("Open"); CloseMenu=fileMenu.add("Close"); fileMenu.addSeparator(); SaveMenu=fileMenu.add("Save"); SaveasMenu=fileMenu.add("Save As"); fileMenu.addSeparator(); PrintMenu=fileMenu.add("Print"); fileMenu.addSeparator(); ExitMenu=fileMenu.add("Exit"); menuBar.add(drawMenu); drawMenu.add(LineItem=new JRadioButtonMenuItem("Line",true)); drawMenu.add(RectangleItem=new JRadioButtonMenuItem("Rectangle",false)); drawMenu.add(CircleItem=new JRadioButtonMenuItem("Circle",false)); drawMenu.add(CurveItem=new JRadioButtonMenuItem("Curve",false)); drawMenu.add(TextItem=new JRadioButtonMenuItem("Text",false)); ButtonGroup types=new ButtonGroup(); types.add(LineItem); types.add(RectangleItem); types.add(CircleItem); types.add(CurveItem); types.add(TextItem); drawMenu.addSeparator(); drawMenu.add(RedItem=new JCheckBoxMenuItem("Red",true)); drawMenu.add(YellowItem=new JCheckBoxMenuItem("Yellow",false)); drawMenu.add(GreenItem=new JCheckBoxMenuItem("Green",false)); drawMenu.add(BlueItem=new JCheckBoxMenuItem("Blue",false)); } private JMenuBar menuBar=new JMenuBar(); //File Menu; private JMenuItem NewMenu,OpenMenu,CloseMenu,SaveMenu, SaveasMenu,PrintMenu,ExitMenu; //Draw Menu; private JRadioButtonMenuItem LineItem,RectangleItem, CircleItem,CurveItem,TextItem; private JCheckBoxMenuItem RedItem,YellowItem,GreenItem,BlueItem; } 就是《Java2 编程指南》书上的例子。 楼主,帮你调试了一下.你的程序没有问题啊!按照你贴出来的两个程序Draw.java和DrawFrame.java都没有问题!"如果不加入public void init()那个函数也没有问题加了就出现这个appletviewer显示“未初始化小程序“,无法显示。"什么意思?你在Draw.java中不是存在这个初始化函数嘛?也没有出现你说的问题提示!你在看看吧...但是别忘记么把两个文件发在同一package哟! 将public void init(){};去掉,也没有什么问题.运行正常啊!import java.awt.*;import javax.swing.*;public class Draw extends JApplet{ public static void main(String[] args) { theApp=new Draw(); //theApp.init(); //} //public void init() //{ window=new DrawFrame("Test Draw"); Toolkit thekit=window.getToolkit(); Dimension wndSize=thekit.getScreenSize(); window.setBounds(wndSize.width/4,wndSize.height/4, wndSize.width/2,wndSize.height/2); window.setVisible(true); } private static DrawFrame window; private static Draw theApp; public void paint(Graphics g) { g.drawString("Jerry",20,90); }} 我说过没有原码没有问题,如果不加入init()函数,用appletviewer打开时会在屏幕上显示"Jerry",但是调用init()函数中的内容后,就appletviewer的状态栏出现了这个“未初始化小程序“,而且原来的"Jerry“也不见了。不知道你们在自己的机上可不可以用appletviewer查看到窗口??? 桌面程序是没有问题的。问题是出在用appletviewer 察看时。附带Draw.html调用文件。<APPLET CODE="Draw.class" WIDTH=500 HEIGHT=400></APPLET> 你用到了 swing控件,调用方法不是这样子的。你用%java_home%\bin\HtmlConverter 来转换一下你的html代码就可以了。注意,请配置好你的%java_home% 和classpath同时,请再命令窗口调用,正常情况会弹出中文界面,你就可以转换了 我的java_home 和 classpath配置如下:JAVA_HOME H:\Java\J2SDK_NB\j2sdk1.4.2CLASSPATH .;%JAVA_HOME%\libPATH %JAVA_HOME%\binhtmlConverter是用来转换html,使得其可以在IE浏览器下运行的,没有转换之前只可以在appletviewer下使用。跟这个没关系,我现在是在appletviewer下调试。而且我的全部程序都时放在bin目录下执行的。 大家给我个可以运行在appletviewer中的窗口程序也可以啊,要有窗口和菜单的。 //file MainApplet.javaimport java.applet.Applet;public class MainApplet extends Applet{ public void init() { new PopFrame().show(); super.init(); }}//file PopFrame.javaimport java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class PopFrame extends Frame{ public PopFrame() { super(); this.setSize(200,200); this.setMenuBar(getMainMenuBar()); SymWindow aSymWindow = new SymWindow(); this.addWindowListener(aSymWindow); } private MenuBar mainMenuBar=null; private MenuBar getMainMenuBar() { if(mainMenuBar == null) { mainMenuBar=new MenuBar(); mainMenuBar.add(new Menu("File")); } return mainMenuBar; } class SymWindow extends WindowAdapter { public void windowClosing(WindowEvent event) { Object object = event.getSource(); if (object == PopFrame.this) onWindowClosing(event); } } void onWindowClosing(WindowEvent event) { setVisible(false); // hide the Frame }}// file sample.html<html><body><applet code=MainApplet.class width="200" height="200" ></applet></body></html> 主 题: 天啊!世态炎凉,没法结贴!!! 作 者: JerryGPS () 等 级: 信 誉 值: 100 所属论坛: Java J2SE / 基础类 问题点数: 1 回复次数: 20 发表时间: 2003-12-22 17:25:17 做完了才发现问题点数只有一点:( Buffett(巴菲特)点数还不简单,你把我放在上面的那个Draw程序调试好,我给你50点,怎么样? 我试过了,你的程序在我的机器上完全没有一点问题jdk1.4.2_02+Eclipse2.12送50分给我吧 可以在appletviewer 下运行吗? 我用的是最原始的工具jdk1.4.2_02+记事本 本来就是拿appletviewer来运行的啊 public void init() { window=new DrawFrame("Test Draw"); Toolkit thekit=window.getToolkit(); Dimension wndSize=thekit.getScreenSize(); window.setBounds(wndSize.width/4,wndSize.height/4, wndSize.width/2,wndSize.height/2); window.setVisible(true); }你根本就没有给theApp显示的机会,它怎么会调用paint方法??你在: window=new DrawFrame("Test Draw");这一行之后加上window.getContentPane().add(this,BorderLayout.CENTER);试试你看看JApplet的父类Container里面的paint、repaint就知道怎么回事了 hehecafe(我喜欢从高处跳下来的感觉) 老兄你懂不懂Applet怎么运行的???还装做很懂似的乱改 呵呵,我把代码拿下来,发现用java Draw也没有显示“Jerry”,所以就... 回贴之后才想起人家出现的不是这个问题,我使用appletviewer运行正常,没有出现错误啊 我觉得也是JRE版本的问题.怎么改呢? 我的JDK和JRE版本都是1.4.2的,有什么问题呢? 靠APPLET 是不要MAIN()的有了这个当然会有问题 applet当然不是以main()方法作为入口但是applet类也是类啊,其中可以写main()方法的这样可以使得这个程序既是applet也是application没有问题,肯定是别处的问题 ^_^ 用java scanner写的一个简单A+B程序 程序出问题了(求高手以前没用过scanner) 把计算得出的数组存入数组 为什么我运行不了这个程序! 看看这段代码 关于gel(一个java的编译器)的问题! 窗口放缩的问题,图形界面高手请进! Applet中如何调用其它HTML文件? 怎样编写打开任何类型的文件,然后将该文件读取写到新建的文件里的Java类? 定义了一个包(含一个文件(两个类)),放在同名目录下,编译通过,可执行时报错找不到mainclass sos,如何制作W2K的启动盘,十分重要,谢谢 小弟求助 linux下java的配置问题
DrawFrame 是自己定义的类,如下:
import javax.swing.*;
import java.awt.*;public class DrawFrame extends JFrame
{
public DrawFrame(String szTitle)
{
setTitle(szTitle);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setJMenuBar(menuBar);
JMenu fileMenu=new JMenu("File");
JMenu drawMenu=new JMenu("Draw");
fileMenu.setMnemonic('F');
drawMenu.setMnemonic('D');
menuBar.add(fileMenu);
NewMenu=fileMenu.add("New");
NewMenu.setAccelerator(KeyStroke.getKeyStroke('N',Event.CTRL_MASK));
OpenMenu=fileMenu.add("Open");
CloseMenu=fileMenu.add("Close");
fileMenu.addSeparator();
SaveMenu=fileMenu.add("Save");
SaveasMenu=fileMenu.add("Save As");
fileMenu.addSeparator();
PrintMenu=fileMenu.add("Print");
fileMenu.addSeparator();
ExitMenu=fileMenu.add("Exit"); menuBar.add(drawMenu);
drawMenu.add(LineItem=new JRadioButtonMenuItem("Line",true));
drawMenu.add(RectangleItem=new JRadioButtonMenuItem("Rectangle",false));
drawMenu.add(CircleItem=new JRadioButtonMenuItem("Circle",false));
drawMenu.add(CurveItem=new JRadioButtonMenuItem("Curve",false));
drawMenu.add(TextItem=new JRadioButtonMenuItem("Text",false));
ButtonGroup types=new ButtonGroup();
types.add(LineItem);
types.add(RectangleItem);
types.add(CircleItem);
types.add(CurveItem);
types.add(TextItem); drawMenu.addSeparator();
drawMenu.add(RedItem=new JCheckBoxMenuItem("Red",true));
drawMenu.add(YellowItem=new JCheckBoxMenuItem("Yellow",false));
drawMenu.add(GreenItem=new JCheckBoxMenuItem("Green",false));
drawMenu.add(BlueItem=new JCheckBoxMenuItem("Blue",false)); }
private JMenuBar menuBar=new JMenuBar(); //File Menu;
private JMenuItem NewMenu,OpenMenu,CloseMenu,SaveMenu,
SaveasMenu,PrintMenu,ExitMenu; //Draw Menu;
private JRadioButtonMenuItem LineItem,RectangleItem,
CircleItem,CurveItem,TextItem; private JCheckBoxMenuItem RedItem,YellowItem,GreenItem,BlueItem;
}
按照你贴出来的两个程序Draw.java和DrawFrame.java都没有问题!
"如果不加入public void init()那个函数也没有问题
加了就出现这个appletviewer显示“未初始化小程序“,无法显示。"
什么意思?你在Draw.java中不是存在这个初始化函数嘛?
也没有出现你说的问题提示!你在看看吧...但是别忘记么把两个文件发在同一package哟!
import java.awt.*;
import javax.swing.*;public class Draw extends JApplet
{
public static void main(String[] args)
{
theApp=new Draw();
//theApp.init();
//}
//public void init()
//{
window=new DrawFrame("Test Draw");
Toolkit thekit=window.getToolkit();
Dimension wndSize=thekit.getScreenSize();
window.setBounds(wndSize.width/4,wndSize.height/4,
wndSize.width/2,wndSize.height/2);
window.setVisible(true);
}
private static DrawFrame window;
private static Draw theApp;
public void paint(Graphics g)
{
g.drawString("Jerry",20,90);
}
}
在屏幕上显示"Jerry",但是调用init()函数中的内容后,就appletviewer的状态栏
出现了这个“未初始化小程序“,而且原来的"Jerry“也不见了。不知道你们在自己
的机上可不可以用appletviewer查看到窗口???
附带Draw.html调用文件。
<APPLET CODE="Draw.class" WIDTH=500 HEIGHT=400>
</APPLET>
调用方法不是这样子的。
你用%java_home%\bin\HtmlConverter 来转换一下你的html代码就可以了。注意,请配置好你的%java_home% 和classpath
同时,请再命令窗口调用,
正常情况会弹出中文界面,你就可以转换了
JAVA_HOME H:\Java\J2SDK_NB\j2sdk1.4.2
CLASSPATH .;%JAVA_HOME%\lib
PATH %JAVA_HOME%\binhtmlConverter是用来转换html,使得其可以在IE浏览器下运行的,
没有转换之前只可以在appletviewer下使用。跟这个没关系,我现在
是在appletviewer下调试。而且我的全部程序都时放在bin目录下执行的。
要有窗口和菜单的。
import java.applet.Applet;
public class MainApplet extends Applet
{
public void init()
{
new PopFrame().show();
super.init();
}
}//file PopFrame.java
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class PopFrame extends Frame
{
public PopFrame()
{
super();
this.setSize(200,200);
this.setMenuBar(getMainMenuBar());
SymWindow aSymWindow = new SymWindow();
this.addWindowListener(aSymWindow);
}
private MenuBar mainMenuBar=null;
private MenuBar getMainMenuBar()
{
if(mainMenuBar == null)
{
mainMenuBar=new MenuBar();
mainMenuBar.add(new Menu("File"));
}
return mainMenuBar;
}
class SymWindow extends WindowAdapter
{
public void windowClosing(WindowEvent event)
{
Object object = event.getSource();
if (object == PopFrame.this)
onWindowClosing(event);
}
}
void onWindowClosing(WindowEvent event)
{
setVisible(false); // hide the Frame
}
}// file sample.html
<html>
<body>
<applet code=MainApplet.class width="200" height="200" >
</applet>
</body>
</html>
作 者: JerryGPS ()
等 级:
信 誉 值: 100
所属论坛: Java J2SE / 基础类
问题点数: 1
回复次数: 20
发表时间: 2003-12-22 17:25:17 做完了才发现问题点数只有一点:(
点数还不简单,
你把我放在上面的那个Draw程序调试好,我给你50点,怎么样?
jdk1.4.2_02+Eclipse2.12
送50分给我吧
jdk1.4.2_02+记事本
{
window=new DrawFrame("Test Draw");
Toolkit thekit=window.getToolkit();
Dimension wndSize=thekit.getScreenSize();
window.setBounds(wndSize.width/4,wndSize.height/4,
wndSize.width/2,wndSize.height/2);
window.setVisible(true);
}
你根本就没有给theApp显示的机会,它怎么会调用paint方法??
你在: window=new DrawFrame("Test Draw");这一行之后加上
window.getContentPane().add(this,BorderLayout.CENTER);
试试
你看看JApplet的父类Container里面的paint、repaint就知道怎么回事了
还装做很懂似的乱改
我使用appletviewer运行正常,没有出现错误啊
APPLET 是不要MAIN()的
有了这个当然会有问题
但是applet类也是类啊,其中可以写main()方法的
这样可以使得这个程序既是applet也是application
没有问题,肯定是别处的问题 ^_^