Hi leutz.
habe eine Uhr im netz gefunden die eigentlich einwandfrei aussieht..
(also zeiger usw..)
habe bisschen was verändert und so würde es mir reichen.
jetzt wollte ich fragen ob ich da irgendwie nen hintergrund rein bekomme..
das Problem ist das jedes mal ein leeres rechteck über die gezeichnete uhr gelegt wird und dann neu gezeichnet wird.
hier mal der code
am coolsten wär hier ja ein rundes JPanel.. und dann ein rundes Zifffernblatt als hintergrund!!
ein hintergrundbild einzubinden wär nicht das problem.. geht bei meinem desktop so
aber ob das bei diesem JPanel geht weiss ich echt nicht.. also ich habs leider noch nicht geschafft..
kann mir mal helfen bitte
schon mal thx im vorraus
gruss
MScalli
habe eine Uhr im netz gefunden die eigentlich einwandfrei aussieht..
(also zeiger usw..)
habe bisschen was verändert und so würde es mir reichen.
jetzt wollte ich fragen ob ich da irgendwie nen hintergrund rein bekomme..
das Problem ist das jedes mal ein leeres rechteck über die gezeichnete uhr gelegt wird und dann neu gezeichnet wird.
hier mal der code
Code:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JPanel;
public class ClockPanel extends JPanel {
Image buffer;
Graphics2D gBuffer;
int LAENGE_SEC = 37;
int LAENGE_MIN = 35;
int LAENGE_HOU = 25;
Calendar date;
int nn=50, r=40; // Zentrum und Radius
ClockPanel(){
setBounds(980,600,100,100);
setVisible(true);
}
public void paint(Graphics g) {
// Double-Buffering
if (buffer==null) {
buffer=createImage(this.getSize().width, this.getSize().height);
gBuffer=(Graphics2D)buffer.getGraphics();
}
gBuffer.clearRect(0,0,this.getSize().width, this.getSize().height);
// Antialiasing
gBuffer.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//gBuffer.drawOval(nn-2,nn-2,4,4);
// Striche bei 3, 6, 9 und 12 Uhr
for (int i=0;i<4;i++) {
gBuffer.drawLine(nn+(int)((r-7)*Math.cos(Math.toRadians(90*i))),nn+(int)((r-7)*Math.sin(Math.toRadians(90*i))),nn+(int)(r*Math.cos(Math.toRadians(90*i))),nn+(int)(r*Math.sin(Math.toRadians(90*i))));
}
// Striche bei jeder Stunde
for (int i=0;i<12;i++) {
gBuffer.drawLine(nn+(int)((r-5)*Math.cos(Math.toRadians(30*i))),nn+(int)((r-5)*Math.sin(Math.toRadians(30*i))),nn+(int)(r*Math.cos(Math.toRadians(30*i))),nn+(int)(r*Math.sin(Math.toRadians(30*i))));
}
// Striche bei jeder Minute (optional)
for (int i=0;i<60;i++) {
gBuffer.drawLine(nn+(int)((r-2)*Math.cos(Math.toRadians(6*i))),nn+(int)((r-2)*Math.sin(Math.toRadians(6*i))),nn+(int)(r*Math.cos(Math.toRadians(6*i))),nn+(int)(r*Math.sin(Math.toRadians(6*i))));
}
date = new GregorianCalendar();
int hours = date.get(Calendar.HOUR_OF_DAY);
int minutes = date.get(Calendar.MINUTE);
int seconds = date.get(Calendar.SECOND);
// Stunden
gBuffer.drawLine(nn,nn,nn+(int)(LAENGE_HOU*Math.cos(Math.toRadians(hours%12*30+minutes/2.0-90))),nn+(int)(LAENGE_HOU*Math.sin(Math.toRadians(hours%12*30+minutes/2.0-90))));
// Minuten
gBuffer.drawLine(nn,nn,nn+(int)(LAENGE_MIN*Math.cos(Math.toRadians(minutes*6-90))),nn+(int)(LAENGE_MIN*Math.sin(Math.toRadians(minutes*6-90))));
// Sekunden
gBuffer.drawLine(nn,nn,nn+(int)(LAENGE_SEC*Math.cos(Math.toRadians(seconds*6-LAENGE_SEC))),nn+(int)(LAENGE_SEC*Math.sin(Math.toRadians(seconds*6-LAENGE_SEC))));
g.drawImage (buffer, 0, 0, this);
// Verzögerung
try {Thread.sleep(50);}
catch (InterruptedException e) {}
repaint();
}
public void update(Graphics g) {paint(g);}
}
am coolsten wär hier ja ein rundes JPanel.. und dann ein rundes Zifffernblatt als hintergrund!!
ein hintergrundbild einzubinden wär nicht das problem.. geht bei meinem desktop so
Code:
desktop = new JDesktopPane() {
@Override
public void paint( Graphics g )
{
g.drawImage(MyParam.ICON_BACKGROUND.getImage(), 0, 0, getSize().width, getSize().height, null);
super.paint(g);
}
};
aber ob das bei diesem JPanel geht weiss ich echt nicht.. also ich habs leider noch nicht geschafft..
kann mir mal helfen bitte
schon mal thx im vorraus
gruss
MScalli