Problem mit Antialiasing

ghost_hacker

Mitglied
Hi Leute!

Ich muss für die Schule in Partnerarbeit ein kleines Applet programmieren, das eine Digitaluhr, eine Analoguhr und einen Wecker beinhaltet. Mein Partner hat die Digitaluhr gemacht und ich die Analoguhr - hat auch bei jedem von uns problemlos funktioniert (den Wecker müssen wir noch). Als wir die Programme jedoch zusammenführen wollten, funktioniert nur eine Uhr und er wirft eine NullPointerException raus - und ich hab keine Ahnung, wieso. Wäre nett, wenn mir ihr da bei der Fehlersuche helfen könntet.

Hier ist der Code (kleiner Hinweis: die ersten 3 Textfelder sind für Eingabe von Stunde/Minute/Sekunde):

Java:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class uhr4 extends Applet
implements ActionListener
{
	private int stunde, minute, sekunde, stunde_wecker, minute_wecker;
	private TextField stunde_text, minute_text, sekunde_text, stunde_wecker_text, minute_wecker_text;
	private Button uhr_anzeigen, uhr_starten, uhr_stoppen, wecker_starten, wecker_stoppen;
	private analoguhr tictac;
	private Digitaluhr Digitalanzeige;
	private Graphics j;
	private AudioClip clockticking, weckersorgen;
	private wecker alarm;
	
	public void init()
	{
		clockticking = getAudioClip(getDocumentBase(), "clockticking.wav");
		weckersorgen = getAudioClip(getDocumentBase(), "wecker.wav");
		
		Graphics j = getGraphics();
		tictac = new analoguhr(j);
		Digitalanzeige = new Digitaluhr();
		
		stunde_text = new TextField(2);
		add(stunde_text);
		stunde_text.addActionListener(this);
		
		minute_text = new TextField(2);
		add(minute_text);
		minute_text.addActionListener(this);
		
		sekunde_text = new TextField(2);
		add(sekunde_text);
		sekunde_text.addActionListener(this);
		
		stunde_wecker_text = new TextField(2);
		add(stunde_wecker_text);
		stunde_wecker_text.addActionListener(this);
		
		minute_wecker_text = new TextField(2);
		add(minute_wecker_text);
		minute_wecker_text.addActionListener(this);
		
		uhr_anzeigen = new Button("Anzeigen");
		add(uhr_anzeigen);
		uhr_anzeigen.addActionListener(this);
		
		uhr_starten = new Button("Start");
		add(uhr_starten);
		uhr_starten.addActionListener(this);
		
		uhr_stoppen = new Button("Stop");
		add(uhr_stoppen);
		uhr_stoppen.addActionListener(this);
		
		wecker_starten = new Button("Wecker-Start");
		add(wecker_starten);
		wecker_starten.addActionListener(this);
		
		wecker_stoppen = new Button("Wecker-Stop");
		add(wecker_stoppen);
		wecker_stoppen.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent event)
	{
		if(event.getSource() == uhr_anzeigen)
		{
			stunde = Integer.parseInt (stunde_text.getText());
			minute = Integer.parseInt (minute_text.getText());
			sekunde = Integer.parseInt (sekunde_text.getText());
					
			tictac.datenübergabe(stunde, minute, sekunde, clockticking);
			tictac.anzeigen();
			
			Digitalanzeige.datenübergabe(stunde,minute,sekunde,j);
			Digitalanzeige.anzeigen();
		}
		
		if(event.getSource() == uhr_starten)
		{
			tictac.start();			
			Digitalanzeige.start();
		}
		
		if(event.getSource() == uhr_stoppen)
		{
			tictac.anhalten();
			Digitalanzeige.anhalten();
		}
	}	
}	


class analoguhr extends Thread
{
	private Graphics g;
	private int zentrum, radius;
	private int stunde, minute, sekunde;
	private boolean running;
	private AudioClip clockticking;
	
	public analoguhr(Graphics temp)
	{
		g = temp;
		
		zentrum = 400;
		radius = 100;

	}
	
	public void datenübergabe(int stunde_temp, int minute_temp, int sekunde_temp, AudioClip clockticking_temp)
	{
		stunde = stunde_temp;
		minute = minute_temp;
		sekunde = sekunde_temp;
		clockticking = clockticking_temp;
	}
	
	public void anzeigen()
	{
		g.setColor(Color.white);
		g.fillRect(zentrum-radius, zentrum-radius, 2*radius, 2*radius);
		g.setColor(Color.black);
		g.drawOval(zentrum-2, zentrum-2,4,4);
		
		//Viertelstriche
		for (int i = 0; i < 4; i++)
		{
			g.drawLine(zentrum + (int) ((radius-7)*Math.cos(Math.toRadians(90*i))), zentrum + (int) ((radius-7)*Math.sin(Math.toRadians(90*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(90*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(90*i))));
		}
		
		//Stundenstriche
		for (int i = 0; i < 12; i++)
		{
			g.drawLine(zentrum + (int) ((radius-5)*Math.cos(Math.toRadians(30*i))), zentrum + (int) ((radius-5)*Math.sin(Math.toRadians(30*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(30*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(30*i))));
		}
		
		//Minutenstriche
		for(int i = 0; i < 60; i++)
		{
			g.drawLine(zentrum + (int) ((radius-2)*Math.cos(Math.toRadians(6*i))), zentrum + (int) ((radius-2)*Math.sin(Math.toRadians(6*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(6*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(6*i))));
		}
		
		//Stundenzeiger
		g.drawLine(zentrum, zentrum, zentrum + (int) (60*Math.cos(Math.toRadians(stunde%12*30+minute/2.0-90))), zentrum + (int) (60*Math.sin(Math.toRadians(stunde%12*30+minute/2.0-90))));
		
		//Minutenzeiger
		g.drawLine(zentrum, zentrum, zentrum + (int) (85*Math.cos(Math.toRadians(minute*6-90))), zentrum + (int) (85*Math.sin(Math.toRadians(minute*6-90))));
		
		//Sekundenzeiger
		g.setColor(Color.gray);
		g.drawLine(zentrum, zentrum, zentrum + (int) (90*Math.cos(Math.toRadians(sekunde*6-90))), zentrum + (int) (90*Math.sin(Math.toRadians(sekunde*6-90))));
	}
	
	public void run()
	{

		running = true;
		while(running)
		{
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException ie )
			{
				System.err.print("Fehler!");
			}
			
			clockticking.play();
		
			if(sekunde<60)
			{
				sekunde++;
				if(sekunde==60)
				{
					sekunde=0;
					minute++;
					if(minute==60)
					{
						minute=0;
						stunde++;
						if(stunde==24)
						{
							stunde=0;
						}
					}
				}
			}
			
			anzeigen();
		}
	}
	
	public void anhalten()
	{
		running = false;
	}
}

class Digitaluhr extends Thread

{
	private Graphics g;
	private int stunde,minute,sekunde;
	private boolean b;

	Font myFont = new Font("Arial", Font.ITALIC|Font.PLAIN, 60);

	public Digitaluhr ()
	{
	}
	
	public void datenübergabe(int stunde_a,int minute_a,int sekunde_a,Graphics j)
	{
		stunde=stunde_a;
		minute=minute_a;
		sekunde=sekunde_a;
		g=j;
	}
	public void anzeigen ()
	{
			g.setFont(myFont);
			g.setColor(Color.white);
			g.fillRect(0,0,500,100);
			g.setColor(Color.black);
		if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
		{
			g.drawString(""+stunde,125,100);
			g.drawString(":"+minute,190,100);
			g.drawString(":"+sekunde,270,100);
		}
	}
	public void run()
	{
		b=true;
		while(b)
		{
				try
				{
					Thread.sleep(1000);
				}
				catch (InterruptedException ie )
				{
					System.err.print("Fehler!");
				}
		
		if(sekunde<60)
		{
			sekunde++;
			if(sekunde==60)
			{
				sekunde=0;
				minute++;
				if(minute==60)
				{
					minute=0;
					stunde++;
					if(stunde==24)
					{
						stunde=0;
					}
				}
			}
			}
			g.setColor(Color.white);
			
			g.fillRect(0,0,500,100);
			g.setColor(Color.black);
		if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
		{
			g.setFont(myFont);
			g.drawString(""+stunde,125,100);
			g.drawString(":"+minute,190,100);
			g.drawString(":"+sekunde,270,100);
			
		}		
		}
		
	}
	public void anhalten()
	{
		b=false;
	}

}

class wecker extends Thread
{
	public wecker()
	{
	}
	
	public void klingeln()
	{
	}
	
	public void klingeln_stop()
	{
	}
}
 
Zuletzt bearbeitet:

ghost_hacker

Mitglied
ne spezifische Zeile gibt er nicht an, nur mehrere^^.

Das hier ist die Fehlermeldung:

Java:
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
	at Digitaluhr.anzeigen(uhr4.java:226)
	at uhr4.actionPerformed(uhr4.java:79)
	at java.awt.Button.processActionEvent(Button.java:392)
	at java.awt.Button.processEvent(Button.java:360)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

//edit: falls es jemandem hilft: wir programmieren mit RealJ
 
Zuletzt bearbeitet:
G

Gast2

Gast
Also:
Zum einen steht die Zeile sehr wohl dort:
Code:
at uhr4.actionPerformed(uhr4.java:75)
und zum anderen ist das keine NullPointerException ;)
EDIT: Post über mir wurde editiert

Wo genau das Problem allerdings liegt weiß ich nicht, bin in Applets nicht so versiert.
In der Fehlermeldung steht allerdings
Code:
analoguhr.datenübergabe(IIILjava/applet/AudioClip;)
, kanns sein dass du noch irgendwelche alten Dateien verwendest wo der Methodenaufruf noch anders war?
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
@EikeB wieso ist die NullPointerException keine NullPointerException und wo hast du die Zeile
> analoguhr.datenübergabe(IIILjava/applet/AudioClip; )
her, hat ghost_hacker sein Posting zwischendurch editiert?
edit: ok ;)

--------

der Fehler ist wahrscheinlich, dass das Graphics-Objekt null ist, welches anfangs mit getGraphics() geholt wurde,
NIE getGraphics() irgendwo aufrufen, schon ist ein Programm an sich erstmal besser

wie kommt man an Graphics ran?
nur durch Überschreiben von paint-Methoden die vom System automatisch mit dem richtigen Graphics-Objekt aufgerufen werden

vor komplizierten Applets besser erstmal in normaleren Swing-Anwendungen Zeichnen üben
http://www.java-forum.org/awt-swing-swt/43939-zeichnen-swing-tutorial.html
 
G

Gast2

Gast
@EikeB wieso ist die NullPointerException keine NullPointerException und wo hast du die Zeile
> analoguhr.datenübergabe(IIILjava/applet/AudioClip
her, hat ghost_hacker sein Posting zwischendurch editiert?
Ja er hats editiert, und ich steh jetzt doof da :bae:
 

ghost_hacker

Mitglied
öhm, danke erstmal, SlaterB, ich bin allerdings, was java angeht, ein ziemlicher anfänger und hab keine ahnung vom überschreiben von methoden :D.

wenn du mir das kurz erklären könntest, so dass ich das umsetzen kann, wäre ich dir sehr dankbar - wibei ich allerdings auch nicht ganz verstehe, wieso der graphikkontext null sein soll - normalerweise müsste er vernünftig zugewiesen sein.

//edit: SlaterB, du bist der beste, dank deinem hinweis mit dem graphikkontext hab ich es zum laufen gekriegt :D. der fehler lag wohl darin, dass der graphikkontext j nach dem übergeben auf null gesetzt wurde - wie du auch gesagt hast, deshalb hab ich einfach nen zweiten graphikkontext erstellt, so dass an jede class jetzt ein verschiedener graphikkontext übergeben wird - damit klappt es dann.
 
Zuletzt bearbeitet:
G

Gast2

Gast
Den geposteten Link hast du dir nicht durchgelesen oder? ;)
Wenn du das gelesen und verstanden hast sollte eig. recht klar sein wie du deinem Code umbauen solltest.
 

ghost_hacker

Mitglied
EikeB, um ehrlich zu sein: nein, ich hab mir nicht das ganze tutorial durchgelesen, vllt werd ich das demnächst mal machen, aber vorerst bin ich froh, dass das programm läuft - trotz getGraphics. Auf die Idee, dass das am Grafikkontext liegen könnte, wär ich nie gekommen - danke nochmal, SlaterB :)
 

ghost_hacker

Mitglied
da hast du höchstwahrscheinlich recht - aber ich knabbere im mom noch an meinem kofler über linux, den lies ich mir erstmal durch, bevor ich mit anderen tutorials anfange :D
 

ghost_hacker

Mitglied
Hey Leute!

Dank SlaterB bin ich jetzt um einiges weitergekommen und hab mein Programm eigentlich schon fertig. Als ich dann jedoch zum Schluss Antialiasing einfügen wollte, ist mir aufgefallen, dass einige Sachen gar nicht mehr angezeigt werden, ohne Antialiasing funktioniert es jedoch - könnte mir da evtl. jemand einen Rat geben?

Hier ist der Code (bei den Sachen, die nicht mehr angezeigt werden, handelt es sich um Zeile 162-172 und Zeile 239-246):

Java:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class uhr6 extends Applet
implements ActionListener
{
	private int stunde, minute, sekunde, stunde_wecker, minute_wecker, sekunde_wecker;
	private TextField stunde_text, minute_text, sekunde_text, stunde_wecker_text, minute_wecker_text, sekunde_wecker_text;
	private Button uhr_anzeigen, uhr_starten, uhr_stoppen, wecker_starten, wecker_stoppen, wecker_schlafen;
	private analoguhr tictac;
	private Digitaluhr Digitalanzeige;
	private Graphics2D j, h;
	private AudioClip clockticking, weckersorgen;
	private wecker alarm;
	private boolean weckerklingelt;
	
	public void init()
	{
		clockticking = getAudioClip(getDocumentBase(), "clockticking.wav");
		weckersorgen = getAudioClip(getDocumentBase(), "wecker.wav");
		
		alarm = new wecker(weckersorgen);
		
		j = (Graphics2D) getGraphics();
		h = (Graphics2D) getGraphics();
		tictac = new analoguhr(j);
		Digitalanzeige = new Digitaluhr();
		
		stunde_text = new TextField(2);
		add(stunde_text);
		stunde_text.setText("Stunde");
		stunde_text.selectAll();
		
		minute_text = new TextField(2);
		add(minute_text);
		minute_text.setText("Minute");
		minute_text.selectAll();
		
		sekunde_text = new TextField(2);
		add(sekunde_text);
		sekunde_text.setText("Sekunde");
		sekunde_text.selectAll();
		
		stunde_wecker_text = new TextField(2);
		add(stunde_wecker_text);
		stunde_wecker_text.setText("Stunde");
		stunde_wecker_text.selectAll();
		
		minute_wecker_text = new TextField(2);
		add(minute_wecker_text);
		minute_wecker_text.setText("Minute");
		minute_wecker_text.selectAll();
		
		sekunde_wecker_text = new TextField(2);
		add(sekunde_wecker_text);
		sekunde_wecker_text.setText("Sekunde");
		sekunde_wecker_text.selectAll();
		
		uhr_anzeigen = new Button("Anzeigen");
		add(uhr_anzeigen);
		uhr_anzeigen.addActionListener(this);
		
		uhr_starten = new Button("Start");
		add(uhr_starten);
		uhr_starten.addActionListener(this);
		
		uhr_stoppen = new Button("Stop");
		add(uhr_stoppen);
		uhr_stoppen.addActionListener(this);
		
		wecker_starten = new Button("Start");
		add(wecker_starten);
		wecker_starten.addActionListener(this);
		
		wecker_stoppen = new Button("Stop");
		add(wecker_stoppen);
		wecker_stoppen.addActionListener(this);
		
		wecker_schlafen = new Button("Schlafen");
		add(wecker_schlafen);
		wecker_schlafen.addActionListener(this);
		
		setLayout(null);
		stunde_text.setBounds(20,20,60,20);
		minute_text.setBounds(20,50,60,20);
		sekunde_text.setBounds(20,80,60,20);
		uhr_anzeigen.setBounds(90,20,60,20);
		uhr_starten.setBounds(90,50,60,20);
		uhr_stoppen.setBounds(90,80,60,20);
		stunde_wecker_text.setBounds(420,20,60,20);
		minute_wecker_text.setBounds(420,50,60,20);
		sekunde_wecker_text.setBounds(420,80,60,20);
		wecker_starten.setBounds(350,20,60,20);
		wecker_stoppen.setBounds(350,50,60,20);
		wecker_schlafen.setBounds(350,80,60,20);
	}
	
	public void actionPerformed(ActionEvent event)
	{
		if(event.getSource() == uhr_anzeigen)
		{
			stunde = Integer.parseInt (stunde_text.getText());
			minute = Integer.parseInt (minute_text.getText());
			sekunde = Integer.parseInt (sekunde_text.getText());
					
			tictac.datenübergabe(stunde, minute, sekunde, clockticking);
			tictac.anzeigen();
			
			Digitalanzeige.datenübergabe(stunde,minute,sekunde,h);
			Digitalanzeige.anzeigen();
		}
		
		if(event.getSource() == uhr_starten)
		{
			tictac.start();			
			Digitalanzeige.start();
		}
		
		if(event.getSource() == uhr_stoppen)
		{
			tictac.anhalten();
			Digitalanzeige.anhalten();
		}
		
		if(event.getSource() == wecker_starten)
		{
			stunde_wecker = Integer.parseInt (stunde_wecker_text.getText());
			minute_wecker = Integer.parseInt (minute_wecker_text.getText());
			sekunde_wecker = Integer.parseInt (sekunde_wecker_text.getText());
			
			weckerklingelt = false;
			
			while(!weckerklingelt)
			{
				if(stunde_wecker == stunde && minute_wecker == minute && sekunde_wecker == sekunde)
				{
					weckerklingelt = true;
					alarm.klingeln();
				}
				
				else
				{
					stunde = tictac.rückgabe_stunde(stunde);
					minute = tictac.rückgabe_minute(minute);
					sekunde = tictac.rückgabe_sekunde(sekunde);
				}
			}
		}
		
		if(event.getSource() == wecker_stoppen)
		{
			alarm.klingeln_stop();
		}
		
		if(event.getSource() == wecker_schlafen)
		{
			alarm.schlafen();
		}
	}
	
	public void paint(Graphics2D g)
	{
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		g.drawLine(250,20,250,100);
		Font beschreibung = new Font("Arial", Font.PLAIN, 20);
		g.setFont(beschreibung);
		
		g.drawString("Uhr", 210,70);
		g.drawString("Wecker", 260,70);
	}
}	

class analoguhr extends Thread
{
	private Graphics2D g;
	private int zentrum, radius;
	private int stunde, minute, sekunde;
	private boolean running;
	private AudioClip clockticking;
	
	public analoguhr(Graphics2D temp)
	{
		g = temp;
		
		zentrum = 250;
		radius = 100;
	}
	
	public void datenübergabe(int stunde_temp, int minute_temp, int sekunde_temp, AudioClip clockticking_temp)
	{
		stunde = stunde_temp;
		minute = minute_temp;
		sekunde = sekunde_temp;
		clockticking = clockticking_temp;
	}
	
	public void anzeigen()
	{
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		g.setColor(Color.white);
		g.fillRect(zentrum-radius, zentrum-radius, 2*radius, 2*radius);
		if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
		{
			g.setColor(Color.black);
			g.drawOval(zentrum-2, zentrum-2,4,4);
		
			//Viertelstriche
			for (int i = 0; i < 4; i++)
			{
				g.drawLine(zentrum + (int) ((radius-7)*Math.cos(Math.toRadians(90*i))), zentrum + (int) ((radius-7)*Math.sin(Math.toRadians(90*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(90*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(90*i))));
			}
		
			//Stundenstriche
			for (int i = 0; i < 12; i++)
			{
				g.drawLine(zentrum + (int) ((radius-5)*Math.cos(Math.toRadians(30*i))), zentrum + (int) ((radius-5)*Math.sin(Math.toRadians(30*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(30*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(30*i))));
			}
		
			//Minutenstriche
			for(int i = 0; i < 60; i++)
			{
				g.drawLine(zentrum + (int) ((radius-2)*Math.cos(Math.toRadians(6*i))), zentrum + (int) ((radius-2)*Math.sin(Math.toRadians(6*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(6*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(6*i))));
			}
		
			//Stundenzeiger
			g.drawLine(zentrum, zentrum, zentrum + (int) (60*Math.cos(Math.toRadians(stunde%12*30+minute/2.0-90))), zentrum + (int) (60*Math.sin(Math.toRadians(stunde%12*30+minute/2.0-90))));
		
			//Minutenzeiger
			g.drawLine(zentrum, zentrum, zentrum + (int) (85*Math.cos(Math.toRadians(minute*6-90))), zentrum + (int) (85*Math.sin(Math.toRadians(minute*6-90))));
		
			//Sekundenzeiger
			g.setColor(Color.gray);
			g.drawLine(zentrum, zentrum, zentrum + (int) (90*Math.cos(Math.toRadians(sekunde*6-90))), zentrum + (int) (90*Math.sin(Math.toRadians(sekunde*6-90))));
		}
		
		else
		{
			Font fehlermeldung = new Font("Arial", Font.PLAIN, 40);
			g.setFont(fehlermeldung);
			g.setColor(Color.red);
			
			g.drawString("Error 99: User IQ underflow!", 20, 200);
		}
	}
	
	public void run()
	{
		running = true;
		while(running)
		{
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException ie )
			{
				System.err.print("Fehler!");
			}
			
			if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
			{
				clockticking.play();
			}
		
			if(sekunde<60)
			{
				sekunde++;
				if(sekunde==60)
				{
					sekunde=0;
					minute++;
					if(minute==60)
					{
						minute=0;
						stunde++;
						if(stunde==24)
						{
							stunde=0;
						}
					}
				}
			}
			
			anzeigen();
		}
	}
	
	public void anhalten()
	{
		running = false;
	}
	
	public int rückgabe_stunde(int stunde_temp)
	{
		stunde_temp = stunde;
		return stunde_temp;
	}
	
	public int rückgabe_minute(int minute_temp)
	{
		minute_temp = minute;
		return minute_temp;
	}
	
	public int rückgabe_sekunde(int sekunde_temp)
	{
		sekunde_temp = sekunde;
		return sekunde_temp;
	}
}

class Digitaluhr extends Thread

{
	private Graphics2D g;
	private int stunde,minute,sekunde;
	private boolean running;
	private String h, m, sec;

	Font digital = new Font("Arial", Font.ITALIC|Font.PLAIN, 60);

	public Digitaluhr ()
	{
	}
	
	public void datenübergabe(int stunde_a,int minute_a,int sekunde_a,Graphics2D temp)
	{
		stunde=stunde_a;
		minute=minute_a;
		sekunde=sekunde_a;
		g=temp;
	}
	
	public void anzeigen ()
	{
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		g.setFont(digital);
		g.setColor(Color.white);
		g.fillRect(0,360,500,140);
		g.setColor(Color.black);
		
		if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
		{
  			if(stunde<10) 
  			{
   			h="0"+String.valueOf(stunde);
  			}
  			else 
  			{
   			h=String.valueOf(stunde);  
  			}
  			if(minute<10)
  			{
  				m="0"+String.valueOf(minute);
  			}
  			else
  			{
   			m=String.valueOf(minute); 
  			}
  			if(sekunde<10)
  			{
   			sec="0"+String.valueOf(sekunde);
  			}
  			else
  			{
   			sec=String.valueOf(sekunde);
  			}
			g.drawString(""+h,135,450);
			g.drawString(":"+m,200,450);
			g.drawString(":"+sec,280,450);
		}
	}
	
	public void run()
	{
		running=true;
		while(running)
		{
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException ie )
			{
				System.err.print("Fehler!");
			}
		
			if(sekunde<60)
			{
				sekunde++;
				if(sekunde==60)
				{
					sekunde=0;
					minute++;
					if(minute==60)
					{
						minute=0;
						stunde++;
						if(stunde==24)
						{
							stunde=0;
						}
					}
				}
			}
			
			anzeigen();		
		}
	}
	
	public void anhalten()
	{
		running=false;
	}
}

class wecker
{
	private AudioClip weckersorgen;
	private boolean ringing;
	
	public wecker(AudioClip weckersorgen_temp)
	{
		weckersorgen = weckersorgen_temp;
	}
	
	public void klingeln()
	{
		weckersorgen.loop();
	}
	
	public void klingeln_stop()
	{
		weckersorgen.stop();
	}
	
	public void schlafen()
	{
		weckersorgen.stop();
		 
		long t0, t1;

      t0 =  System.currentTimeMillis();

      do{
          t1 = System.currentTimeMillis();
      }
      while ((t1 - t0) < (10 * 1000));
      
      weckersorgen.loop();		
	}
}

Vielen Dank
ghost_hacker
 
S

SlaterB

Gast
du bist dir sicher dass es wieder geht, wenn du z.B. nur genau Zeile 164 auskommentierst?

der Unterschied Graphics vs Graphics2D erscheint mir viel wichtiger,
z.B. ist paint(Graphics g) eine extrem wichtige Methode von Applet, die man richtigerweise überschreiben sollte um selber zu malen

paint(Graphics2D g) ist dagegen komplett was anderes, eine selber definiere Methode für die sich das Applet nicht interessiert,
die Methode wird von dir selber anscheinend nicht aufgerufen
 

ghost_hacker

Mitglied
ne, es geht, wenn ich zeile 164 auskommentiere und aus dem Graphics2D ein Graphics mache, und um ehrlich zu sein, ist das neuland für mich und ich kenn mich da nicht sehr gut aus. bei paint ist mir das antialiasing auch noch egal, aber bei anzeigen() der analoguhr muss das unbedingt mit rein, da wird aber jetzt die fehlermeldung nicht angezeigt
 

ghost_hacker

Mitglied
bei paint hab ich das jetzt behoben - war auch relativ einfach, nachdem du mir den fehler verraten hattest...

Java:
	public void paint(Graphics g)
	{
		Graphics2D j = (Graphics2D) g;
		j.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		j.drawLine(250,20,250,100);
		Font beschreibung = new Font("Arial", Font.PLAIN, 20);
		j.setFont(beschreibung);
		
		j.drawString("Uhr", 210,70);
		j.drawString("Wecker", 260,70);
	}
 
S

SlaterB

Gast
tja, eine unangenehme Behauptung wäre jetzt, dass das mit dem sowieso schlechten getGraphics()-Weg nicht geht,
beschwören kann ich es nicht aber wäre verrückt da jetzt Zeit reinzustecken

und der Umbau ist gar nicht schwer, die Threads müssen beizeiten nur repaint() am Applet-Objekt aufrufen,
dann kommt die paint-Methode mit sauberen Graphics-Objekt dran, dieses nutzen um bei anderen Methoden anzeige-Methoden aufzurufen, das wars im Grunde schon,

aber wichtig: immer das aktuelle Graphics-Objekt als Parameter übergeben, nirgendwo längerfristig als Attribut speichern,
siehe auch Tutorial
 

ghost_hacker

Mitglied
ok, das problem mit anzeigen() bei der analoguhr hab ich jetzt auch behoben - da war n fehler in der if-schleife, sodass er das, was in else stand, nie ausgeführt hat. das programm funktioniert jetzt komplett, trotz der vielen getGraphics() :).

falls es jemanden interessiert: hier ist der (vorerst) finale code

Java:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class uhr7 extends Applet
implements ActionListener
{
	private int stunde, minute, sekunde, stunde_wecker, minute_wecker, sekunde_wecker;
	private TextField stunde_text, minute_text, sekunde_text, stunde_wecker_text, minute_wecker_text, sekunde_wecker_text;
	private Button uhr_anzeigen, uhr_starten, uhr_stoppen, wecker_starten, wecker_stoppen, wecker_schlafen;
	private analoguhr tictac;
	private Digitaluhr Digitalanzeige;
	private Graphics2D j, h;
	private AudioClip clockticking, weckersorgen;
	private wecker alarm;
	private boolean weckerklingelt;
	
	public void init()
	{
		clockticking = getAudioClip(getDocumentBase(), "clockticking.wav");
		weckersorgen = getAudioClip(getDocumentBase(), "wecker.wav");
		
		alarm = new wecker(weckersorgen);
		
		j = (Graphics2D) getGraphics();
		h = (Graphics2D) getGraphics();
		
		stunde_text = new TextField(2);
		add(stunde_text);
		stunde_text.setText("Stunde");
		stunde_text.selectAll();
		
		minute_text = new TextField(2);
		add(minute_text);
		minute_text.setText("Minute");
		minute_text.selectAll();
		
		sekunde_text = new TextField(2);
		add(sekunde_text);
		sekunde_text.setText("Sekunde");
		sekunde_text.selectAll();
		
		stunde_wecker_text = new TextField(2);
		add(stunde_wecker_text);
		stunde_wecker_text.setText("Stunde");
		stunde_wecker_text.selectAll();
		
		minute_wecker_text = new TextField(2);
		add(minute_wecker_text);
		minute_wecker_text.setText("Minute");
		minute_wecker_text.selectAll();
		
		sekunde_wecker_text = new TextField(2);
		add(sekunde_wecker_text);
		sekunde_wecker_text.setText("Sekunde");
		sekunde_wecker_text.selectAll();
		
		uhr_anzeigen = new Button("Anzeigen");
		add(uhr_anzeigen);
		uhr_anzeigen.addActionListener(this);
		
		uhr_starten = new Button("Start");
		add(uhr_starten);
		uhr_starten.addActionListener(this);
		
		uhr_stoppen = new Button("Stop");
		add(uhr_stoppen);
		uhr_stoppen.addActionListener(this);
		
		wecker_starten = new Button("Start");
		add(wecker_starten);
		wecker_starten.addActionListener(this);
		
		wecker_stoppen = new Button("Stop");
		add(wecker_stoppen);
		wecker_stoppen.addActionListener(this);
		
		wecker_schlafen = new Button("Schlafen");
		add(wecker_schlafen);
		wecker_schlafen.addActionListener(this);
		
		setLayout(null);
		stunde_text.setBounds(20,20,60,20);
		minute_text.setBounds(20,50,60,20);
		sekunde_text.setBounds(20,80,60,20);
		uhr_anzeigen.setBounds(90,20,60,20);
		uhr_starten.setBounds(90,50,60,20);
		uhr_stoppen.setBounds(90,80,60,20);
		stunde_wecker_text.setBounds(420,20,60,20);
		minute_wecker_text.setBounds(420,50,60,20);
		sekunde_wecker_text.setBounds(420,80,60,20);
		wecker_starten.setBounds(350,20,60,20);
		wecker_stoppen.setBounds(350,50,60,20);
		wecker_schlafen.setBounds(350,80,60,20);
	}
	
	public void actionPerformed(ActionEvent event)
	{
		if(event.getSource() == uhr_anzeigen)
		{
			tictac = new analoguhr();
			Digitalanzeige = new Digitaluhr();

			stunde = Integer.parseInt (stunde_text.getText());
			minute = Integer.parseInt (minute_text.getText());
			sekunde = Integer.parseInt (sekunde_text.getText());
					
			tictac.datenübergabe(stunde, minute, sekunde, clockticking, j);
			tictac.anzeigen();
			
			Digitalanzeige.datenübergabe(stunde,minute,sekunde,h);
			Digitalanzeige.anzeigen();
		}
		
		if(event.getSource() == uhr_starten)
		{
			tictac.start();			
			Digitalanzeige.start();
		}
		
		if(event.getSource() == uhr_stoppen)
		{
			tictac.anhalten();
			Digitalanzeige.anhalten();
		}
		
		if(event.getSource() == wecker_starten)
		{
			stunde_wecker = Integer.parseInt (stunde_wecker_text.getText());
			minute_wecker = Integer.parseInt (minute_wecker_text.getText());
			sekunde_wecker = Integer.parseInt (sekunde_wecker_text.getText());
			
			weckerklingelt = false;
			
			while(!weckerklingelt)
			{
				if(stunde_wecker == stunde && minute_wecker == minute && sekunde_wecker == sekunde)
				{
					weckerklingelt = true;
					alarm.klingeln();
				}
				
				else
				{
					stunde = tictac.rückgabe_stunde(stunde);
					minute = tictac.rückgabe_minute(minute);
					sekunde = tictac.rückgabe_sekunde(sekunde);
				}
			}
		}
		
		if(event.getSource() == wecker_stoppen)
		{
			alarm.klingeln_stop();
		}
		
		if(event.getSource() == wecker_schlafen)
		{
			alarm.schlafen();
		}
	}
	
	public void paint(Graphics g)
	{
		Graphics2D i = (Graphics2D) g;
		i.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		i.drawLine(250,20,250,100);
		Font beschreibung = new Font("Arial", Font.PLAIN, 20);
		i.setFont(beschreibung);
		
		i.drawString("Uhr", 210,70);
		i.drawString("Wecker", 260,70);
	}
}	

class analoguhr extends Thread
{
	private Graphics2D g;
	private int zentrum, radius;
	private int stunde, minute, sekunde;
	private boolean running;
	private AudioClip clockticking;
	
	public analoguhr()
	{
		zentrum = 250;
		radius = 100;
	}
	
	public void datenübergabe(int stunde_temp, int minute_temp, int sekunde_temp, AudioClip clockticking_temp, Graphics2D g_temp)
	{
		stunde = stunde_temp;
		minute = minute_temp;
		sekunde = sekunde_temp;
		clockticking = clockticking_temp;
		g = g_temp;
	}
	
	public void anzeigen()
	{
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		g.setColor(Color.white);
		g.fillRect(0,170,500,40);
		g.fillRect(zentrum-radius, zentrum-radius, 2*radius, 2*radius);
		if(stunde < 24 && stunde >= 0 && minute < 60 && minute >= 0 && sekunde < 60 && sekunde >= 0)
		{
			g.setColor(Color.black);
			g.drawOval(zentrum-2, zentrum-2,4,4);
		
			//Viertelstriche
			for (int i = 0; i < 4; i++)
			{
				g.drawLine(zentrum + (int) ((radius-7)*Math.cos(Math.toRadians(90*i))), zentrum + (int) ((radius-7)*Math.sin(Math.toRadians(90*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(90*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(90*i))));
			}
		
			//Stundenstriche
			for (int i = 0; i < 12; i++)
			{
				g.drawLine(zentrum + (int) ((radius-5)*Math.cos(Math.toRadians(30*i))), zentrum + (int) ((radius-5)*Math.sin(Math.toRadians(30*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(30*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(30*i))));
			}
		
			//Minutenstriche
			for(int i = 0; i < 60; i++)
			{
				g.drawLine(zentrum + (int) ((radius-2)*Math.cos(Math.toRadians(6*i))), zentrum + (int) ((radius-2)*Math.sin(Math.toRadians(6*i))), zentrum + (int) (radius*Math.cos(Math.toRadians(6*i))), zentrum + (int) (radius*Math.sin(Math.toRadians(6*i))));
			}
		
			//Stundenzeiger
			g.drawLine(zentrum, zentrum, zentrum + (int) (60*Math.cos(Math.toRadians(stunde%12*30+minute/2.0-90))), zentrum + (int) (60*Math.sin(Math.toRadians(stunde%12*30+minute/2.0-90))));
		
			//Minutenzeiger
			g.drawLine(zentrum, zentrum, zentrum + (int) (85*Math.cos(Math.toRadians(minute*6-90))), zentrum + (int) (85*Math.sin(Math.toRadians(minute*6-90))));
		
			//Sekundenzeiger
			g.setColor(Color.gray);
			g.drawLine(zentrum, zentrum, zentrum + (int) (90*Math.cos(Math.toRadians(sekunde*6-90))), zentrum + (int) (90*Math.sin(Math.toRadians(sekunde*6-90))));
		}
		
		else
		{
			Font fehlermeldung = new Font("Arial", Font.PLAIN, 40);
			g.setFont(fehlermeldung);
			g.setColor(Color.red);
			
			g.drawString("Error 99: User IQ underflow!", 5, 200);
		}
	}
	
	public void fehlermeldung()
	{		

	}
	
	public void run()
	{
		running = true;
		while(running)
		{
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException ie )
			{
				System.err.print("Fehler!");
			}
			
			if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
			{
				clockticking.play();
			}
		
			if(sekunde<60)
			{
				sekunde++;
				if(sekunde==60)
				{
					sekunde=0;
					minute++;
					if(minute==60)
					{
						minute=0;
						stunde++;
						if(stunde==24)
						{
							stunde=0;
						}
					}
				}
			}
			
			anzeigen();
		}
	}
	
	public void anhalten()
	{
		running = false;
	}
	
	public int rückgabe_stunde(int stunde_temp)
	{
		stunde_temp = stunde;
		return stunde_temp;
	}
	
	public int rückgabe_minute(int minute_temp)
	{
		minute_temp = minute;
		return minute_temp;
	}
	
	public int rückgabe_sekunde(int sekunde_temp)
	{
		sekunde_temp = sekunde;
		return sekunde_temp;
	}
}

class Digitaluhr extends Thread

{
	private Graphics2D g;
	private int stunde,minute,sekunde;
	private boolean running;
	private String h, m, sec;

	Font digital = new Font("Arial", Font.ITALIC|Font.PLAIN, 60);

	public Digitaluhr ()
	{
	}
	
	public void datenübergabe(int stunde_a,int minute_a,int sekunde_a,Graphics2D temp)
	{
		stunde=stunde_a;
		minute=minute_a;
		sekunde=sekunde_a;
		g=temp;
	}
	
	public void anzeigen ()
	{
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		g.setFont(digital);
		g.setColor(Color.white);
		g.fillRect(0,360,500,140);
		g.setColor(Color.black);
		
		if(stunde<24) if(stunde>=0) if(minute<60) if(minute>=0) if(sekunde<60) if(sekunde>=0)
		{
  			if(stunde<10) 
  			{
   			h="0"+String.valueOf(stunde);
  			}
  			else 
  			{
   			h=String.valueOf(stunde);  
  			}
  			if(minute<10)
  			{
  				m="0"+String.valueOf(minute);
  			}
  			else
  			{
   			m=String.valueOf(minute); 
  			}
  			if(sekunde<10)
  			{
   			sec="0"+String.valueOf(sekunde);
  			}
  			else
  			{
   			sec=String.valueOf(sekunde);
  			}
			g.drawString(""+h,135,450);
			g.drawString(":"+m,200,450);
			g.drawString(":"+sec,280,450);
		}
	}
	
	public void run()
	{
		running=true;
		while(running)
		{
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException ie )
			{
				System.err.print("Fehler!");
			}
		
			if(sekunde<60)
			{
				sekunde++;
				if(sekunde==60)
				{
					sekunde=0;
					minute++;
					if(minute==60)
					{
						minute=0;
						stunde++;
						if(stunde==24)
						{
							stunde=0;
						}
					}
				}
			}
			
			anzeigen();		
		}
	}
	
	public void anhalten()
	{
		running=false;
	}
}

class wecker
{
	private AudioClip weckersorgen;
	private boolean ringing;
	
	public wecker(AudioClip weckersorgen_temp)
	{
		weckersorgen = weckersorgen_temp;
	}
	
	public void klingeln()
	{
		weckersorgen.loop();
	}
	
	public void klingeln_stop()
	{
		weckersorgen.stop();
	}
	
	public void schlafen()
	{
		weckersorgen.stop();
		 
		long t0, t1;

      t0 =  System.currentTimeMillis();

      do{
          t1 = System.currentTimeMillis();
      }
      while ((t1 - t0) < (10 * 1000));
      
      weckersorgen.loop();		
	}
}
 
Zuletzt bearbeitet:
M

mchook

Gast
Hallo,
ich sollte in den vorliegenden quelltext ein antialiasing einfügen damit die schrift geglättet wird.
ich wollte mal wissen obs so richtig ist ?
[Java]
import java.awt.*;
import java.awt.Graphics2D;
import java.awt.image.*;
import javax.swing.*;


public class Lektion7 extends JApplet implements Runnable {
int faRot = 3, faGruen = 0, faBlau = 0;
private Color textColor;
private BufferedImage bufImage;
boolean dir = true;

// Abarbeitung eines Programmteils (Thread)
public void run() {
// Endlosschleife
while(true) {
animate();
try {
Thread.sleep(25);
} catch(InterruptedException e) {
e.printStackTrace(System.out);
}
}
// Stop
}

public void animate() {
// schrittweise Veraenderung der Farben
if(faGruen == 0)
dir = true;
if(faBlau == 255)
dir = false;
if(dir) {
if (faRot < 255)
faRot += 3;
else {
if (faGruen < 255)
faGruen += 3;
else {
if (faBlau < 255)
faBlau += 3;
}
}
} else {
if (faRot > 0)
faRot -= 3;
else {
if (faBlau > 0)
faBlau -= 3;
else {
if (faGruen > 0)
faGruen -= 3;
}
}
}
textColor = new Color(faRot, faGruen, faBlau);
repaint();
}

public void paint(Graphics text) {
if(createBuffer()) {
Graphics2D g2 = (Graphics2D) bufImage.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// maximale Abmessungen des Grafikobjekts
int px = getWidth();
int py = getHeight();
// Hintergrundfarbe
Color bgColor = new Color(255-faRot, 255-faGruen, 255-faBlau);
g2.setColor(bgColor);
g2.fillRect(0, 0, px, py);
g2.setColor(textColor);
float pt = (faRot + faGruen + faBlau) / 765f * px;
String family = "San-Serif";
int style = Font.BOLD;
// Textvergroesserung
int size = (int) (py * pt / px) + 24;
Font benutzerFont = new Font(family, style, size);
g2.setFont(benutzerFont);

// neue Textposition
g2.drawString("Java", (int) pt - size, (py + 3 * size / 4) / 2);
// virtuelles Offset-Bild
text.drawImage(bufImage, 0, 0, this);
g2.dispose();
}
}

private boolean createBuffer() {
if(bufImage != null)
return true;
else {
if(getWidth() == 0 || getHeight() == 0)
return false;
// gepuffertes Bild ohne Transparenz
bufImage = new BufferedImage(getWidth(), getHeight(),
Transparency.OPAQUE);
}
return true;
}

public Dimension getPreferredSize() {
return new Dimension(400, 80);
}

public void init() {
JFrame fenster = new JFrame("Swing-Applet im eigenen Rahmen");
// Aufloesen des Fensters nach dem Schliessen
fenster.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// Inhaltsbereich (ContentPane) des Swing-Fensters
Container appletRahmen = fenster.getContentPane();
BorderLayout h1 = new BorderLayout();
appletRahmen.setLayout(h1);
JLabel titel = new JLabel( "pfennigdesign ",
JLabel.RIGHT);
appletRahmen.add(titel, BorderLayout.SOUTH);
// Hinzufuegen des Animationsobjekts zum Rahmen (Center)
Lektion7 animator = new Lektion7();
appletRahmen.add(animator, BorderLayout.CENTER);
// Positionierung auf dem Bildschirm
fenster.setLocation(400, 20);
fenster.pack();
fenster.setVisible(true);
Thread thread = new Thread(animator);
// Starten des Programmfragments, Uebergabe an die Methode run
thread.start();
}

}[/code]
 
S

SlaterB

Gast
ist richtig soweit direkt sichtbar, aber kannst du das nicht an der Programmausgabe direkt nachprüfen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Problem mit TextField.requestFocus(); AWT, Swing, JavaFX & SWT 17
Juelin Problem beim Laden Controller AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
K CheckBox Problem AWT, Swing, JavaFX & SWT 5
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
B Swing Problem mit Bildpfad AWT, Swing, JavaFX & SWT 4
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
M Swing pack() Problem mit Taskleiste AWT, Swing, JavaFX & SWT 4
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
C Thread-/ Simulations- Problem AWT, Swing, JavaFX & SWT 18
G Swing Setvisible problem AWT, Swing, JavaFX & SWT 1
J JTabbedPane: close Button Problem AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX -> fxmlLoader -> getResourceAsStream Problem AWT, Swing, JavaFX & SWT 1
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
T LayoutManager LookAndFeel-Problem AWT, Swing, JavaFX & SWT 4
F Problem mit Implementierung von Kollisionsabfrage AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
B JavaFX Problem bei Kamera / Group, gesamte Scene bewegt sich mit AWT, Swing, JavaFX & SWT 0
L Swing Vier Gewinnt Problem AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben