ادخل في اللموضوع على طول بسرع
طبعا الامتحان Open book, oben internet وكل شي يعني لاحد يقول غش
المهم المطلوب كتابة برنامج ساعة رقمية
الساعه كتبتها بسهولة مع استخدام خط رقمي
المطكشلة انه يريد انعكاس عمودي للساعه تحتها
الكود الخاص بتنحويل النص اللى صورة وضعت بدايته تعليق ومكتوب Mirror
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.swing.*;
import java.util.*;
import javax.imageio.ImageIO;
class Clock extends JFrame implements Runnable {
Thread runner; //declare global objects
Font clockFont;
//
//---------Mirror image of string
//
String fileName = "Image";
File newFile = new File("./" + fileName + ".jpeg");
private FontRenderContext frc = new FontRenderContext(null, true, true);
private Rectangle2D bounds;
public Clock() {
super("Java clock");
setSize(600, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
//setResizable(false); //create window
clockFont = new Font("digifacewide", Font.BOLD, 100); //create font instance
Container contentArea = getContentPane();
ClockPanel timeDisplay = new ClockPanel();
contentArea.add(timeDisplay); //add components
setContentPane(contentArea);
start(); //start thread running
}
public class ClockPanel extends JPanel {
public void paintComponent(Graphics painter) {
super.paintComponent(painter);
painter.setFont(clockFont); //create clock components
painter.setColor(Color.black);
painter.drawString(timeNow(), 20, 140);
///
//------mirror image of string ---------------
//
bounds = clockFont.getStringBounds(timeNow(), frc);
int w = (int) bounds.getWidth();
int h = (int) bounds.getHeight();
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, w, h);
g.setColor(Color.BLACK);
g.setFont(clockFont);
//ImageIO.write(image, "jpeg", fileName);
g.drawImage(image, null, 200, 200);
}
}
//get current time
public String timeNow() {
Calendar now = Calendar.getInstance();
int hrs = now.get(Calendar.HOUR_OF_DAY);
int min = now.get(Calendar.MINUTE);
int sec = now.get(Calendar.SECOND);
String time = zero(hrs) + ":" + zero(min) + ":" + zero(sec);
return time;
}
public String zero(int num) {
String number = (num < 10) ? ("0" + num) : ("" + num);
return number; //Add leading zero if needed
}
public void start() {
if (runner == null) {
runner = new Thread(this);
}
runner.start();
//method to start thread
}
public void run() {
while (runner == Thread.currentThread()) {
repaint();
//define thread task
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("Thread failed");
}
}
}
//create main method
public static void main(String[] args) {
Clock eg = new Clock();
}
}ارجو المساعده سريعا
طبعا المشكلة ان دالة عرض الصورة لم تعمل g.drawImage