【发布时间】:2014-03-11 20:14:35
【问题描述】:
我在 Herbert Schildt 的《java 2》一书中遇到了一段代码。这是代码。
import java.applet.Applet;
导入 java.awt.; 导入 java.awt.event.;
public class SampleFrame extends Frame
{
public SampleFrame(String title)
{
super(title);
MyWindowAdapter wAdapter = new MyWindowAdapter(this);
addWindowListener(wAdapter);
}
public void paint(Graphics g)
{
g.drawString("this is in the frame window", 10, 40);
}
}
class MyWindowAdapter extends WindowAdapter
{
SampleFrame sampleFrame;
public MyWindowAdapter(SampleFrame sampleFrame)
{
this.sampleFrame = sampleFrame;
}
public void WindowClosing(WindowEvent we)
{
sampleFrame.setVisible(false);
}
}
class MyApplet extends Applet
{
Frame f;
public void init()
{
f = new SampleFrame("a frame window");
f.setSize(250, 250);
f.setVisible(true);
}
public void start()
{
f.setVisible(true);
}
public void stop()
{
f.setVisible(false);
}
public void paint(Graphics g)
{
g.drawString("this is an applet window", 10, 20);
}
}
根据这本书,它应该启动一个应该启动一个框架的小程序。但是当小程序在状态栏中启动时,它会说“开始:小程序未初始化” 为什么会这样?
我确实创建了小程序,但没有像这样将派生的小程序类声明为公共
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
class MouseEvents extends Applet implements MouseListener,
MouseMotionListener
{
String msg = "";
int mouseX = 0 ,mouseY = 0 ,count=0;
Boolean tPU ;
private Point myPoint;
public MouseEvents()
{
myPoint = new
Point();
}
public void init()
{
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void mouseDragged(MouseEvent arg0)
{
// TODO Auto-generated method stub
mouseX = arg0.getX();
mouseY = arg0.getY();
msg = "*";
myPoint = arg0.getPoint();
tPU = arg0.isPopupTrigger();
count = arg0.getClickCount();
arg0.translatePoint(100, 100);
myPoint = arg0.getPoint();
showStatus("dragging mouse at " + arg0.getX() + ", " +arg0.getY());
showStatus("popUps ?"+tPU);
showStatus("dragging mouse at " + myPoint.x + ", " +myPoint.y);
showStatus("dragging mouse at " + myPoint.x + ", " +myPoint.y);
showStatus("dragging mouse at " + myPoint.x + ", " +myPoint.y);
repaint();
}
@Override
public void mouseMoved(MouseEvent arg0)
{
// TODO Auto-generated method stub
showStatus("moving mouse at " + arg0.getX() + ", " +arg0.getY());
}
@Override
public void mouseClicked(MouseEvent e)
{
// TODO Auto-generated method stub
mouseX=0;
mouseY=10;
msg="mouse clicked";
repaint();
}
@Override
public void mouseEntered(MouseEvent e)
{
// TODO Auto-generated method stub
mouseX=0;
mouseY=10;
msg="mouse entered";
repaint();
}
@Override
public void mouseExited(MouseEvent e)
{
// TODO Auto-generated method stub
mouseX=0;
mouseY=20;
msg="mouse exited";
repaint();
}
@Override
public void mousePressed(MouseEvent e)
{
// TODO Auto-generated method stub
mouseX = e.getX();
mouseY = e.getY();
msg = "mouse pressed down";
repaint();
}
@Override
public void mouseReleased(MouseEvent e)
{
// TODO Auto-generated method stub
mouseX = e.getX();
mouseY = e.getY();
msg = "mouse released up";
repaint();
}
public void paint(Graphics g)
{
g.drawString(msg, mouseX, mouseY);
}
}
【问题讨论】:
-
说实话,我认为您在阅读一本关于 Java 2 的书是在浪费时间。Java 2 在 2004 年被 Java 5 取代,Java 5 是一种更复杂的语言。我们现在正在使用 Java 7,有些人甚至在使用 Java 8。没有人再使用 Java 2,而且您从那本书中学到的许多技术都将过时并且不会很有用。
-
我在巴基斯坦的当地市场搜索了 java 7/8,但在任何地方都没有找到。在网上搜索了一本免费的书。仍然没有找到。你会或其他人好心给我一个赫伯特·希尔特最新版电子书的直接链接吗?
-
抱歉,我删除了我的最后一条评论,因为我不确定所链接的图书的版权状态。我不确定在这里链接到它是否合法,但我推荐 Bruce Eckel 的“Thinking in Java”。第四版涵盖了 Java 6,它与当前“足够接近”以供使用。你可以在网上找到它。
标签: java