Frage zum Aufbau eines JApplets

Status
Nicht offen für weitere Antworten.

dewenni

Mitglied
Hallo,
ich habe folgendes Applet gebastelt: Applet
(die 2 oberen roten Linen lassen sich verscheiben)

Soweit so gut. Da ich am Anfang der Programmierung noch keinerlei Erfahrungen mit Java hatte, ist die Programmierung nicht gerade sauber. Ich möchte das ganze etwas überarbeiten. Eine Sache ist z.B. das ich AWT und Swing gemischt habe.

Der Aufbau ist folgendermaßen:
Jedes Diagramm ist eine eigene Klasse die jeweils in einer eigenen *.java Datei geschrieben ist.
Momentan sind diese Klassen noch von Canvas abgeleitet.

Code:
//#### Klasse für Sägezahnspannung ######################################################
public class u_panel extends java.awt.Canvas
{
        //Variablen
	public static int u_steuer_y=100;
	public static int u_steuer_x=20;
	
	//---- Konstruktor
    public u_panel()
    {
  	  super();
  	  setBackground(java.awt.Color.white);
  	  setBounds(24,24,500,180);					
     }

      
    // Überschreiben der Methode paint() für u_canvas
    public void paint(Graphics g)
    {
    	Font klein = new Font("Arial", Font.PLAIN, 10);  
    	
    	g.drawString("Sägezahn", 20, 165);

    	//Koorditatensystem
        g.setColor(Color.black);
        g.drawString("t", 445,165);
        g.drawLine(20,20,20,150);
        g.drawLine(20,150,450,150);
 
        usw.....

Des weiteren gibt es eine "HauptKlasse" die von JApplet abgeleitet ist. Dort wird von jeder der Klassen die die Diagramme enthalten ein Objekt erzeugt.

Code:
u_panel u_jp = new u_panel();

diese Objekte werden dann in ein GridBagLayout gesetzt:

Code:
GridBagLayout gbl=new GridBagLayout();
setLayout(gbl);
GridBagConstraints gbc=new GridBagConstraints();
	
gbc.fill=GridBagConstraints.BOTH;		
gbc.insets = new Insets(5,5,5,5);	

//Sägezahn
gbc.anchor = gbc.WEST;
gbc.gridx = 0;  							
gbc.gridy = 0; 							  
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbl.setConstraints(u_jp, gbc);
add(u_jp);

usw...

Das funktioniert zwar ganz gut, ist aber wohl nicht die sauberste Lösung.
Wie kann ich das besser machen? Ich habe bereits versucht Canvas in JComponent zuändern und paintComponent anstelle von paint zu benutzen, aber das funktoniert irgendwie nicht. Es wird dann jedenfalls nichts mehr angezeigt.

Eine weitere Frage, die eigentlich ganz einfach klingt ist, wie ich das bei dem Schaltbild mache. Im moment passiert das noch alles in der HauptKlasse. Ich lade das Bild in ein Icon und setze dieses in ein Label. Das Label setze ich dann genau wie die anderen Objekte in das GridBagLayout

Wie mache ich das wenn ich auch das Schaltbild in einer extra .java Datei bzw. Klasse erstellen möchte und das dann genau wie die anderen in der Hauptklasse ins Layout setzen will.
Ich habe einiges ausprobiert, aber irgendwie klappt es nicht. Wie müsste die Klasse grob aussehen und wovon müsste ich sie ableiten?

Die ganzen Möglichkeiten machen mich noch verrückt (JComponent, JFrame, JPanel, JLabel, Container, Canvas, usw.)

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.
Also in erster Linie geht es mir darum zu klären wie man das am saubersten aufbauen würde und wovon ich die einzelnen Klassen am besten ableiten sollte.

Vielen Dank schonmal für eure Hilfe

Gruß Sven
 

dewenni

Mitglied
Danke für den Link.
Leider bringt mich das nicht so wirklich weiter. Wahrscheinlich mangelt es mir noch etwas am Verständnis.
Hat nich noch jemand einen Vorschlag wie ich das am besten aufbauen sollte und wovon ich die einzelnen Klassen am besten ableiten sollte.
 
B

Beni

Gast
Hast du auch das Applet durch ein JApplet ersetzt, als du deine Diagramme von JComponent erben liesest? Wenn man Swing benutzt, sollte keine einzige AWT-Componente mehr verwendet werden.

Deine Schaltbild-Klasse müsste gleich aussehen, wie deine Diagramm-Klassen. Leider sagt "es klappt irgendwie nicht" nicht sehr viel aus...
 

dewenni

Mitglied
Ich habe es heute nochmal getestet - und siehe da, es funktioniert.
Ich habe jetzt alle Canvas durch JComponent ersetzt. Somit müsste ich eigentlich komplett auf swing gewechselt haben.
Mein Fehler lag wohl beim repaint.

Dafür erstmal Danke!

Jetzt nochmal zum Schaltbild:
Mein Ziel ist es das Schaltbild in einer extra Klasse zu laden. Auf diesem Schaltbild möchte ich dann mit der paint-Methode noch etwas zeichnen. Im Moment lade ich das Bild ja noch als ImageIcon in ein JLabel. Das ist ja dann wahrscheinlich hinfällig, oder?
Das Bild mit der darüberliegenden Zeichnung möchte ich dann zusammen in der Hauptklasse (dem JApplet) in das Layout legen. Sprich in der Hauptklasse ein Objekt der Schaltbild-Klasse erzeugen und dieses dann ins Layout legen.
Soweit verständlich?

Jetzt nochmal meine Frage, von was kann ich die Klasse für das Schaltbild ableiten,
wie lade ich dann das Bild und wie kann ich dann darauf zeichenen (so das man das Bild darunter noch sieht).

Bin für eure Hilfe echt dankbar!!!
 

André Uhres

Top Contributor
Beni hat gesagt.:
..Wenn man Swing benutzt, sollte keine einzige AWT-Componente mehr verwendet werden..
Dieses Ideal sollte man natürlich möglichst anstreben.
Es ist aber prinzipiell auch möglich, eine AWT-Komponente in einem Swing-Programm zu verwenden
(aus welchen Gründen auch immer), solange man einige einfache Richtlinien beachtet (sind in meinen Link oben nachzulesen).
 

dewenni

Mitglied
So, bin wieder ein Stück weiter.
Es funktioniert jetzt so weit das ich das Bild in einer extra Klasse laden kann und dann wie gewünscht im JApplet ins Layout setzen kann.
Jetzt bleiben leider immernoch zwei Probleme.
1. ist das gif jetzt nicht mehr animiert und 2. klappt das mit dem darauf zeichnen noch nicht.

Beispiel-Klasse für das laden des Schaltbildes
Code:
public class sb extends JComponent {

   private BufferedImage image_url;

   public sb(){
    image_url = loadUrlImage();
   } 
    
	public void paint(Graphics g){
      super.paint(g);
      g.drawLine(40, 40, 100, 100);
      g.drawImage(image_url, 0, 0, null);
	} 

	private URL url;{
		try {url = new URL("url zum animierten .gif");
	    } catch (MalformedURLException e) {e.printStackTrace();}
	}
	   
    private BufferedImage loadUrlImage(){
    	BufferedImage image_url = null;
	    try {
	        InputStream is = new BufferedInputStream(url.openStream());
	        image_url = ImageIO.read(is);
	           
	        } 
	    catch (IOException e) { }
	        
	    return image_url;
	} 
		
}


verkürzte JApplet-Klasse
Code:
public class test extends javax.swing.JApplet implements Runnable{

	sb sb =new sb();
	
	Thread pwmThread = new Thread();
	boolean running = true;
	
	//Init
	public void init(){
		
		//Thread starten
		Thread pwmThread = new Thread(this);
		pwmThread.start(); 
			
		Container container = getContentPane();
	    container.setBackground(Color.white);
		
		GridBagLayout gbl=new GridBagLayout();
		setLayout(gbl);
		GridBagConstraints gbc=new GridBagConstraints();
			               
		gbc.fill=GridBagConstraints.BOTH;		
		gbc.insets = new Insets(5,5,5,5);
		
		
		Dimension d = new Dimension(500,300);
		sb.setPreferredSize(d);
		
		gbc.anchor = gbc.WEST;
		gbc.gridx = 0;  							
		gbc.gridy = 0; 							  
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbl.setConstraints(sb, gbc);
		
		add(sb);

		
	}
	



//	##### Run ###############################################################  
	  public void run() { 

			  try
	          {
	            // Wait 500milliseconds before continuing
	            pwmThread.sleep(500);
	          }
	          
			  catch (InterruptedException e)
	          {System.out.println(e);} 
		  	  
		  }
	  
	


//##### Start ###############################################################  
public void start() { 
	  

}


//##### Stop ################################################################
public void stop() {
  // stoppe Ausführung
	  
	 running = false;
     pwmThread = null;
     
}


//##### destroy #############################################################
public void destroy() {
  // initialisierte Ressourcen freigeben
}

	 
	
}

Kann mir da noch jemand weiterhelfen?
Muss ich jetzt noch eine Komponente anlegen, auf der ich zeichne und diese dann auf die JComponent vom Bild legen?

Warum ist das Schaltbild jetzt nicht mehr animiert?
Mit der ImageIcon auf JLabel-Methode war es animiert

Gruß Sven
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Mercurial Frage Tools - Maven, Gradle, Ant & mehr 5
VfL_Freak Webstart Frage zu "readinmg certificates" Tools - Maven, Gradle, Ant & mehr 6
D Maven Frage Tools - Maven, Gradle, Ant & mehr 3
AlexSpritze Ant Frage zu manifest-class-path mit Target jar Tools - Maven, Gradle, Ant & mehr 1
B Maven deploy-file frage Tools - Maven, Gradle, Ant & mehr 6
B Maven Frage zu assembly Tools - Maven, Gradle, Ant & mehr 9
C Applet Frage Tools - Maven, Gradle, Ant & mehr 4
-MacNuke- Maven (Verständnis-)frage Tools - Maven, Gradle, Ant & mehr 7
deetee Applet Frage Tools - Maven, Gradle, Ant & mehr 2
G Frage zur JARs beim deployen Tools - Maven, Gradle, Ant & mehr 5
M Kurze Frage - Applet in Applet starten? Tools - Maven, Gradle, Ant & mehr 10
U Newbie-Frage: Applet "fernsteuern"? Tools - Maven, Gradle, Ant & mehr 4
T Frage wegen Chat-Applet signieren Tools - Maven, Gradle, Ant & mehr 11
TheJavaKid wichtige sicherheits frage zu applets Tools - Maven, Gradle, Ant & mehr 12
S JAVA APPLET While Schleife Frage! Tools - Maven, Gradle, Ant & mehr 3
M eine Frage über JApplet und JMenuBar Tools - Maven, Gradle, Ant & mehr 6
T Frage bzgl. Sicherheitslimits Tools - Maven, Gradle, Ant & mehr 5
P allgemeine applet performance frage bezügl. jar Tools - Maven, Gradle, Ant & mehr 2
D Schon wieder eine Frage für meinen Editor Tools - Maven, Gradle, Ant & mehr 10
L frage zu remote-fähigkeit in browsern mit Java Tools - Maven, Gradle, Ant & mehr 4
P Eine Frage fur Galleries ? Tools - Maven, Gradle, Ant & mehr 5
H Frage zu Filechoser Tools - Maven, Gradle, Ant & mehr 4
K Mal ne ganz dumme Frage Tools - Maven, Gradle, Ant & mehr 3
A [GUI] [JApplet] [JDialog] Nochmal die Frage zur Modalität un Tools - Maven, Gradle, Ant & mehr 3
L frage nach windowClosing Tools - Maven, Gradle, Ant & mehr 3
C Frage zum drawLine-Befehl Tools - Maven, Gradle, Ant & mehr 2
J Applet Frage (Animation) Double Buffer? Tools - Maven, Gradle, Ant & mehr 27
C Frage Tools - Maven, Gradle, Ant & mehr 6
S Zeitverzögerter Aufbau eines Schachbretts Tools - Maven, Gradle, Ant & mehr 3
Oneixee5 Maven Deployment eines Spring-Boot.jar Tools - Maven, Gradle, Ant & mehr 0
Tom299 (Gradle) Wie die JAR eines 2. Projektes "includieren" Tools - Maven, Gradle, Ant & mehr 1
D Möchte gerne eine seperate Klasse eines Tomcat Projekts Neu-Kompilieren Tools - Maven, Gradle, Ant & mehr 3
C Neustart eines Webservers (Möglichkeiten) Tools - Maven, Gradle, Ant & mehr 5
V Maven Deployment eines war zu JBoss Tools - Maven, Gradle, Ant & mehr 2
HaukeG Maven Suche nach Ideen für Realisierung eines eigenen Plugin Tools - Maven, Gradle, Ant & mehr 3
fastjack Gesamt-JavaDoc eines Multi-Modulprojekts Tools - Maven, Gradle, Ant & mehr 3
P Classpath beim Ausführen eines SQL-Scripts per ANT angeben Tools - Maven, Gradle, Ant & mehr 2
C Aufruf eines Java Programms mittels ant MIT Parametern Tools - Maven, Gradle, Ant & mehr 2
C Applet Öffnen eines JAR-Files im JAR-File Tools - Maven, Gradle, Ant & mehr 2
N Unterordner eines Pfades Rekursiv durchsuchen Tools - Maven, Gradle, Ant & mehr 5
V JAR-Datei eines (J)Applet funktioniert nicht - Help! Tools - Maven, Gradle, Ant & mehr 19
J Online Shop mit Hilfe eines Applets Tools - Maven, Gradle, Ant & mehr 17
G Problem beim deployen eines Applets Tools - Maven, Gradle, Ant & mehr 8
T Rückgabe Werte eines Applpets. Tools - Maven, Gradle, Ant & mehr 3
B Starten eines Applets außerhalb der INIT()-Klasse Tools - Maven, Gradle, Ant & mehr 5
J Größenänderung eines Panels innerhalb eines Applets Tools - Maven, Gradle, Ant & mehr 4
F build time eines applet Tools - Maven, Gradle, Ant & mehr 13
D Größe eines jpeg's in einem Java-Applet ändern ? Tools - Maven, Gradle, Ant & mehr 7
P Hilfe - Seltsame Fehlermeldung nach Signatur eines Applets! Tools - Maven, Gradle, Ant & mehr 12
R Grundlegendes: JFrame innerhalb eines Applets Tools - Maven, Gradle, Ant & mehr 4
H Sicherheitsabfrage eines signierten Applets auslesen Tools - Maven, Gradle, Ant & mehr 6
M Kann man den Ladebildschirm eines Applets ändern? Tools - Maven, Gradle, Ant & mehr 2
S relativer pfad eines .jar-applets Tools - Maven, Gradle, Ant & mehr 3
S Erstellen eines CMS Tools - Maven, Gradle, Ant & mehr 11
D URLConnection innerhalb eines Applets! Tools - Maven, Gradle, Ant & mehr 3
B Farbe eines Pixels in einem Applet Tools - Maven, Gradle, Ant & mehr 4
P Durch druecken eines Buttons ein neues Fenster oeffnen Tools - Maven, Gradle, Ant & mehr 7
T Absturz bei Öffnen eines Applet. Tools - Maven, Gradle, Ant & mehr 5
D Anzeige eines Bildes in einem Applet Tools - Maven, Gradle, Ant & mehr 2
R Code beim Beenden eines Applets ausführen? Tools - Maven, Gradle, Ant & mehr 1
M Textdatei von einem Server, innerhalb eines Applets, lesen Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen

Neue Themen


Oben