源程序如下:import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.*;public class TextTest
{
public static void main(String[] args)
{
TextTestFrame frame=new TextTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
} /**
A frame with two text fields to set a clock.
*/
class TextTestFrame extends JFrame
{
public TextTestFrame()
{
setTitle("TextTest"); DocumentListener listener =new ClockFieldListener(); JPanel panel=new JPanel(); panel.add(new JLabel("Hours:"));
hourField=new JTextField("12",3);
panel.add(hourField);
hourField.getDocument().addDocumentListener(listener); panel.add(new JLabel("Minutes:"));
minuteField=new JTextField("00",3);
panel.add(minuteField);
minuteField.getDocument().addDocumentListener(listener); add(panel,BorderLayout.SOUTH); clock=new ClockPanel();
add(clock,BorderLayout.CENTER);
pack();
} public void setClock()
{
try
{
int hours=Integer.parseInt(hourField.getText().trim());
int minutes=Integer.parseInt(minuteField.getText().trim());
clock.setTime(hours,minutes);
}
catch (NumberFormatException e)
{
}
} public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=300; private JTextField hourField;
private JTextField minuteField;
private ClockPanel clock; private class ClockFieldListener implements DocumentListener
{
public void insertUpdate(DocumentEvent event) { setClock( );}
public void removetUpdate(DocumentEvent event) { setClock( );}
public void changedUpdate(DocumentEvent event) {}
}
}class ClockPanel extends JPanel
{
public ClockPanel()
{
setPreferredSize(new Dimension(2*RADIUS+1,2*RADIUS+1));
} public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Ellipse2D circle=new Ellipse2D.Double(0,0,2*RADIUS,2*RADIUS);
g2.draw(circle); double hourAngle=Math.toRadians(90-360*minutes/(12*60));
drawHand(g2,hourAngle,HOUR_HAND_LENGTH); double minuteAngle=Math.toRadians(90-360*minutes/(60));
drawHand(g2,minuteAngle,MINUTE_HAND_LENGTH);
} public void drawHand(Graphics2D g2,double angle,double handLength)
{
Point2D end =new Point2D.Double(RADIUS+handLength*Math.cos(angle),RADIUS-handLength*Math.sin(angle));
Point2D center=new Point2D.Double(RADIUS,RADIUS);
g2.draw(new Line2D.Double(center,end));
} public void setTime(int h,int m)
{
minutes=h*60+m;
repaint();
} private double minutes=0;
private int RADIUS=100;
private double MINUTE_HAND_LENGTH=0.8*RADIUS;
private double HOUR_HAND_LENGTH=0.6*RADIUS;
}=================================================
这个是一个定义时钟的程序,即输入一个时刻,时钟就会转成该时刻的样子:================================================错误描述如下:D:\java\java1>javac TextTest.java
TextTest.java:67: TextTestFrame.ClockFieldListener 不是抽象的,并且未覆盖 javax.
swing.event.DocumentListener 中的抽象方法 changedUpdate(javax.swing.event.Docume
ntEvent)
private class ClockFieldListener implements DocumentListener
^
1 错误===============================================
我自己估计是这里的错误: private class ClockFieldListener implements DocumentListener
{
public void insertUpdate(DocumentEvent event) { setClock( );}
public void removetUpdate(DocumentEvent event) { setClock( );}
public void changedUpdate(DocumentEvent event) {}
}就是这个类的错误,改成Insert、Remove、Changed也不行
可是改不好。==================================================
请高人帮帮忙,谢谢了。
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.*;public class TextTest
{
public static void main(String[] args)
{
TextTestFrame frame=new TextTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
} /**
A frame with two text fields to set a clock.
*/
class TextTestFrame extends JFrame
{
public TextTestFrame()
{
setTitle("TextTest"); DocumentListener listener =new ClockFieldListener(); JPanel panel=new JPanel(); panel.add(new JLabel("Hours:"));
hourField=new JTextField("12",3);
panel.add(hourField);
hourField.getDocument().addDocumentListener(listener); panel.add(new JLabel("Minutes:"));
minuteField=new JTextField("00",3);
panel.add(minuteField);
minuteField.getDocument().addDocumentListener(listener); add(panel,BorderLayout.SOUTH); clock=new ClockPanel();
add(clock,BorderLayout.CENTER);
pack();
} public void setClock()
{
try
{
int hours=Integer.parseInt(hourField.getText().trim());
int minutes=Integer.parseInt(minuteField.getText().trim());
clock.setTime(hours,minutes);
}
catch (NumberFormatException e)
{
}
} public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HEIGHT=300; private JTextField hourField;
private JTextField minuteField;
private ClockPanel clock; private class ClockFieldListener implements DocumentListener
{
public void insertUpdate(DocumentEvent event) { setClock( );}
public void removetUpdate(DocumentEvent event) { setClock( );}
public void changedUpdate(DocumentEvent event) {}
}
}class ClockPanel extends JPanel
{
public ClockPanel()
{
setPreferredSize(new Dimension(2*RADIUS+1,2*RADIUS+1));
} public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
Ellipse2D circle=new Ellipse2D.Double(0,0,2*RADIUS,2*RADIUS);
g2.draw(circle); double hourAngle=Math.toRadians(90-360*minutes/(12*60));
drawHand(g2,hourAngle,HOUR_HAND_LENGTH); double minuteAngle=Math.toRadians(90-360*minutes/(60));
drawHand(g2,minuteAngle,MINUTE_HAND_LENGTH);
} public void drawHand(Graphics2D g2,double angle,double handLength)
{
Point2D end =new Point2D.Double(RADIUS+handLength*Math.cos(angle),RADIUS-handLength*Math.sin(angle));
Point2D center=new Point2D.Double(RADIUS,RADIUS);
g2.draw(new Line2D.Double(center,end));
} public void setTime(int h,int m)
{
minutes=h*60+m;
repaint();
} private double minutes=0;
private int RADIUS=100;
private double MINUTE_HAND_LENGTH=0.8*RADIUS;
private double HOUR_HAND_LENGTH=0.6*RADIUS;
}=================================================
这个是一个定义时钟的程序,即输入一个时刻,时钟就会转成该时刻的样子:================================================错误描述如下:D:\java\java1>javac TextTest.java
TextTest.java:67: TextTestFrame.ClockFieldListener 不是抽象的,并且未覆盖 javax.
swing.event.DocumentListener 中的抽象方法 changedUpdate(javax.swing.event.Docume
ntEvent)
private class ClockFieldListener implements DocumentListener
^
1 错误===============================================
我自己估计是这里的错误: private class ClockFieldListener implements DocumentListener
{
public void insertUpdate(DocumentEvent event) { setClock( );}
public void removetUpdate(DocumentEvent event) { setClock( );}
public void changedUpdate(DocumentEvent event) {}
}就是这个类的错误,改成Insert、Remove、Changed也不行
可是改不好。==================================================
请高人帮帮忙,谢谢了。
解决方案 »
- 关于JTable单元格文字换行~
- 关于System.out.println参数是object类型时的一点疑惑。
- 如何隐藏真实的URL?
- JFrame对象被disposal后调用setVisible(ture)怎么会有能显示,怎样才能彻底释放JFrame的资源
- weblogic tuxedo 开发结构
- CLASSPATH的问题?
- 《Effective Java》侯捷译下载
- .java是否还有用???
- 从书上抄来的一个例子,很简单,但就是调不通,各位帮忙看看
- 垃圾回收器:gc()的细节,请讨论
- 简单程序run后出现selection does not contain a main type错误
- 【在线等】ArrayList的嵌套问题
setClock();
}
写错了
改为
removeUpdate
void insertUpdate(DocumentEvent event) { setClock( );}
void removetUpdate(DocumentEvent event) { setClock( );}
void changedUpdate(DocumentEvent event) {}
};