📄 testtest.java
字号:
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class TestTest
{
public static void main(String[] args)
{
TextTestFrame frame = new TextTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class TextTestFrame extends JFrame
{
public TextTestFrame()
{
setTitle("TextTest");
setSize(300,300);
Container contentPane = getContentPane();
JPanel panel=new JPanel();
DocumentListener listener=new ClockListener();
hourField=new JTextField("12",3);
hourField.getDocument().addDocumentListener(listener);
panel.add(hourField);
minuteField=new JTextField("00",3);
minuteField.getDocument().addDocumentListener(listener);
panel.add(minuteField);
contentPane.add(panel,BorderLayout.SOUTH);
clock=new ClockPanel();
contentPane.add(clock,BorderLayout.CENTER);
}
private class ClockListener implements DocumentListener
{
public void changedUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
}
public void insertUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
setClock();
}
public void removeUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
setClock();
}
}
private void setClock()
{
int hour=Integer.parseInt(hourField.getText().trim());
int minute=Integer.parseInt(minuteField.getText().trim());
clock.setTime(hour,minute);
}
private JTextField hourField;
private JTextField minuteField;
private ClockPanel clock;
}
class ClockPanel extends JPanel
{
public void paintComponent(Graphics g)
{
// draw the circular boundary
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Ellipse2D circle
= new Ellipse2D.Double(0, 0, 2 * RADIUS, 2 * RADIUS);
g2.draw(circle);
// draw the hour hand
double hourAngle
= Math.toRadians(90 - 360 * minutes / (12 * 60));
drawHand(g2, hourAngle, HOUR_HAND_LENGTH);
// draw the minute hand
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));
}
/**
Set the time to be displayed on the clock
@param h hours
@param m minutes
*/
public void setTime(int h, int m)
{
minutes = h * 60 + m;
repaint();
}
private double minutes = 0;
private double RADIUS = 100;
private double MINUTE_HAND_LENGTH = 0.8 * RADIUS;
private double HOUR_HAND_LENGTH = 0.6 * RADIUS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -