Hi Leute,
ich schreibe gerade ein Applet von einem Display (oder ich versuche es gerade) und bekomme die uhrzeit nicht angezeigt. Ich habe leider mit java noch nicht wirklich viel gemacht also fände ich es toll, wenn mir einer helfen könnte. Ich habe schon die Suche benutzt, aber die anderen Uhren konnten mir nicht wirklich helfen.
Hier mal was ich bis jetzt hab:
so sollte es aussehen:
(der Punkt zwischen Stunde und Minute blinkt)
Vielen Dank schon mal im Voraus!
Shando
ich schreibe gerade ein Applet von einem Display (oder ich versuche es gerade) und bekomme die uhrzeit nicht angezeigt. Ich habe leider mit java noch nicht wirklich viel gemacht also fände ich es toll, wenn mir einer helfen könnte. Ich habe schon die Suche benutzt, aber die anderen Uhren konnten mir nicht wirklich helfen.
Hier mal was ich bis jetzt hab:
PHP:
package terminal;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.lang.*;
import java.text.*;
import java.util.Hashtable;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextAttribute;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
/**
*
* @author praktikant
*/
public class DisplayForm extends javax.swing.JPanel implements Runnable
{
private LineBreakMeasurer lineMeasurer;
private int paragraphStart;
private int paragraphEnd;
public static String
VERSION = "1.1.0";
private java.text.SimpleDateFormat
f1, f2;
private String show = "00:00";
private boolean running;
private Thread thread;
private boolean even = false;
private Graphics g2;
private Image screen;
private static final
Hashtable<TextAttribute, Object> map =
new Hashtable<TextAttribute, Object>();
static
{
map.put(TextAttribute.FAMILY, "Serif");
map.put(TextAttribute.SIZE, new Float(18.0));
}
private static AttributedString kopf = new AttributedString(
"Unitime " +
"........-gmbh.com ",
map);
private void uhrzeit()
{
f1 = new java.text.SimpleDateFormat("HH:mm");
f2 = new java.text.SimpleDateFormat("HH mm");
}
public void start()
{
// initVars();
g2 = screen.getGraphics();
g2.setPaintMode();
thread = new Thread(this, "clock");
thread.setPriority(Thread.MIN_PRIORITY);
running = true;
thread.start();
}
public void update(Graphics g)
{
paint(g);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
setBackground(Color.gray);
Graphics2D g2d = (Graphics2D)g;
if (lineMeasurer == null)
{
AttributedCharacterIterator paragraph = kopf.getIterator();
paragraphStart = paragraph.getBeginIndex();
paragraphEnd = paragraph.getEndIndex();
FontRenderContext frc = g2d.getFontRenderContext();
lineMeasurer = new LineBreakMeasurer(paragraph, frc);
}
// Set break width to width of Component.
float breakWidth = (float)getSize().width;
float drawPosY = 0;
// Set position to the index of the first character in the paragraph.
lineMeasurer.setPosition(paragraphStart);
// Get lines until the entire paragraph has been displayed.
while (lineMeasurer.getPosition() < paragraphEnd)
{
// Retrieve next layout. A cleverer program would also cache
// these layouts until the component is re-sized.
TextLayout layout = lineMeasurer.nextLayout(breakWidth);
// Compute pen x position. If the paragraph is right-to-left we
// will align the TextLayouts to the right edge of the panel.
// Note: this won't occur for the English text in this sample.
// Note: drawPosX is always where the LEFT of the text is placed.
float drawPosX = layout.isLeftToRight()
? 0 : breakWidth - layout.getAdvance();
// Move y-coordinate by the ascent of the layout.
drawPosY += layout.getAscent();
// Draw the TextLayout at (drawPosX, drawPosY).
layout.draw(g2d, drawPosX, drawPosY);
// Move y-coordinate in preparation for next layout.
drawPosY += layout.getDescent() + layout.getLeading();
}
g.drawLine(0, 45, 500, 45);
for (int i=0; i<6; i++)
{
g.drawRect(290 + 15*i, 5, 15, 20);
}
g.setFont(new Font(Font.SERIF, Font.PLAIN, 20));
g.drawLine(0, 225, 500, 225);
g.drawRect(5, 230, 125, 30);
g.drawRect(135, 230, 125, 30);
g.drawRect(265, 230 , 125, 30);
g.drawString("Kommt:", 40, 250);
g.drawString("Geht:", 300, 250);
g.drawString("Abwesend:", 160, 250);
if (g2 == null)
return;
// erst mal g2 mit dem Bildinhalt schreiben
g2.drawString(show, 100, 100);
//// Ausgabe updaten
g.drawImage(screen, 0, 0, null);
}
public void run()
{
while(running)
{
if (even)
show = f1.format(new Date()); //"HH:mm"
else
show = f2.format(new Date()); //"HH mm"
even = !even;
repaint();
try
{
thread.sleep(499);
} catch (Exception e)
{
System.out.println("" +e);
}
}
}
/** stop this applet */
public void stop()
{
running = false;
thread.interrupt();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents()
{
setBackground(new java.awt.Color(118, 107, 103));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
}
so sollte es aussehen:
(der Punkt zwischen Stunde und Minute blinkt)
Vielen Dank schon mal im Voraus!
Shando
Zuletzt bearbeitet: