Applet Hilfe ( was sonst ;) ) aufgabe 3

Servaaa

Mitglied
kann mir jemand helfen das zu beenden? komme nicht mehr voran.

die Aufgabe lautet :

Funktion 1: Das Applet erlaubt, in einem festen Rechteck graue Gitterlinien zu zeichnen. Die Maschenweite des Gitters und die Dicke der Gitterlinien lassen sich je durch einen Schie- beregler einstellen. (Vgl. Render-Funktionen in Pixelgraphikprogrammen.)

Funktion 2: Das Appletfenster zeigt in einem Rechteck die Farbe an, in welcher das Gitter gezeichnet wird. Die RGB-Anteile können durch drei Schieberegler einzeln beeinflusst wer- den. Die RGB-Anteile können aber auch durch die Eingabe von Zahlenwerte zwischen 0 und 255 festgelegt werden (Eingabefehler abfangen!). Die Schieberegler sind nicht die Java- eigenen, sondern viel grosszügiger angelegt.

Wie Ihr erkennen werded bin ich noch bei der Funktion 1, mit Fehlern =)
KURZ SO ALS INFO ICH BIN EINSTEIGER UND ZWAR SO WAS VON

Ich hab zur zeit das:

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Scrollbar;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;

public class AUFGABE__3 extends Applet {

Scrollbar dicke_slider = new Scrollbar(Scrollbar.HORIZONTAL);
Scrollbar weite_slider = new Scrollbar(Scrollbar.VERTICAL);
int weite = 10;
int dicke = 10;

@Override
public void init() {
dicke_slider.setMinimum(1); // kleinster wert auf dem slider
dicke_slider.setMaximum(20); // groesster wert auf dem slider
dicke_slider.setValue(10); // start wert des sliders
dicke_slider.setVisibleAmount(1); // breite des reglers

this.add(dicke_slider); // slider zum applet hinzufuegen

weite_slider.setMinimum(1);
weite_slider.setMaximum(20);
weite_slider.setValue(10);
weite_slider.setVisibleAmount(1);

this.add(weite_slider);

WeiteAdjustmentListener weite_listener = new WeiteAdjustmentListener();
weite_slider.addAjustmentListener(weite_listener);

DickeAdjustementListener dicke_listener = new DickeAdjustementListener();
dicke_slider.addAdjustmentListener(dicke_listener); // listener bei slider registrieren

super.init(); // initialisieren der elternklasse (unwichtig)
}


// innere Klasse fuer den Listener des dicke_slider
class DickeAdjustementListener implements AdjustmentListener {


@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
// wenn gerade eingestellt wird
if(e.getValueIsAdjusting()){
System.out.println("adjusting thickness...");
} else {
dicke = e.getValue();
System.out.println(dicke);
repaint();
}
}

class WeiteAdustmentListener implements AdjustmentListener {


public void adjustmentValueChanged(AdjustmentEvent e){

if(e.getValueIsAdjusting()){
System.out.println("adjusting width...");
} else {
weite = e.getValue();
System.out.println(weite);
repaint();
}
}
}

@Override
public void paint(Graphics g) {
System.out.println("painting...");

int x_0 = 50;
int y_0 = 150;
int breite = 500;
int hoehe = 500;
// rechteck zeichnen
g.drawRect(x_0, y_0, breite, hoehe);

// farbe aendern
Color backupColor = g.getColor();
g.setColor(Color.GRAY);

// gitter zeichnen
int y = y_0;
int linienAnzahl = calculateNumberOfLines(hoehe);
for(int i = 0; i < linienAnzahl; i++){
g.fillRect(x_0 , y, breite, dicke);
// y fuer naechste linie erhoehen
y = y + dicke + weite;
}

// farbe zurueck setzen
g.setColor(backupColor);
// alles andere zeichnen lassen (z.B. den slider)
super.paint(g);
}

int calculateNumberOfLines(int space){
// berechnet anzahl der moeglichen linien im gegebenen platz
// pro linie braucht man (dicke + weite) platz.
return (space / (dicke + weite));
}




}

}


Ich bitte um Hilfe danke für Eure Unterstützung
 

turtle

Top Contributor
Benutze bitte Java-Tags für Quellcode und poste den gesamten Code, denn es fehlen noch Teile.

Einfach die "Brocken" uns vor die Füße zu werfen, betrachten viele, ich zum Beispiel, als unfair und wenig kooperativ;)

Weitehin wäre es hilfreich, wenn du beschreiben würdest, was bereits funktioniert (Beispiel horizontale Gitterlinien) und was nicht und wie sich das äussert.
 

Servaaa

Mitglied
Ich möchete mich für das endschuldigen sry.

das ist die Aufgabe:

Funktion 1: Das Applet erlaubt, in einem festen Rechteck graue Gitterlinien zu zeichnen. Die Maschenweite des Gitters und die Dicke der Gitterlinien lassen sich je durch einen Schie- beregler einstellen. (Vgl. Render-Funktionen in Pixelgraphikprogrammen.)

Das Problem ich hab das mal gemacht aber das Apllet startet nicht und ich komme nicht mehr weiter.

Java:
	import java.applet.Applet;
    import java.awt.Graphics;
    import java.awt.Scrollbar;
    import java.awt.event.AdjustmentEvent;
    import java.awt.event.AdjustmentListener;
    import java.awt.Color; 
    
    
    public class AUFGABE__3 extends Applet {
     
            Scrollbar dicke_slider = new Scrollbar(Scrollbar.HORIZONTAL);
            Scrollbar weite_slider = new Scrollbar(Scrollbar.VERTICAL);
            int weite = 10;
            int dicke = 10;
           
            @Override
            public void init() {
                    dicke_slider.setMinimum(1); // kleinster wert auf dem slider
                    dicke_slider.setMaximum(20); // groesster wert auf dem slider
                    dicke_slider.setValue(10); // start wert des sliders
                    dicke_slider.setVisibleAmount(1); // breite des reglers
     
                    this.add(dicke_slider); // slider zum applet hinzufuegen
     
                   weite_slider.setMinimum(1);
                   weite_slider.setMaximum(20);
                   weite_slider.setValue(10);
                   weite_slider.setVisibleAmount(1);
                    
                    this.add(weite_slider);
                    
                    WeiteAdjustmentListener weite_listener = new WeiteAdjustmentListener();
                    weite_slider.addAjustmentListener(weite_listener);
                    
                    DickeAdjustementListener dicke_listener = new DickeAdjustementListener();
                    dicke_slider.addAdjustmentListener(dicke_listener); // listener bei slider registrieren
     
                    super.init(); // initialisieren der elternklasse (unwichtig)
            }
     
     
            // innere Klasse fuer den Listener des dicke_slider
            class DickeAdjustementListener implements AdjustmentListener {
            	
            
                    @Override
                    public void adjustmentValueChanged(AdjustmentEvent e) {
                            // wenn gerade eingestellt wird
                            if(e.getValueIsAdjusting()){
                                    System.out.println("adjusting thickness...");
                            } else {
                                    dicke = e.getValue();
                                    System.out.println(dicke);
                                    repaint();
                            }
                    }
                    
                    class WeiteAdustmentListener implements AdjustmentListener {
                    	
                    	
                    	public void adjustmentValueChanged(AdjustmentEvent e){
                    		
                    		if(e.getValueIsAdjusting()){
                                System.out.println("adjusting width...");
                        } else {
                                weite = e.getValue();
                                System.out.println(weite);
                                repaint();
                    	}
                    }
            }
            
            @Override
        public void paint (Graphics g) {
                System.out.println("painting...");
               
                int x_0 = 50;
                int y_0 = 150;
                int breite = 500;
                int hoehe = 500;
                // rechteck zeichnen
                g.drawRect(x_0, y_0, breite, hoehe);
               
                // farbe aendern
                Color backupColor = g.getColor();
                g.setColor(Color.GRAY);
               
                // gitter zeichnen
                int y = y_0;
                int linienAnzahl = calculateNumberOfLines(hoehe);
                for(int i = 0; i < linienAnzahl; i++){
                        g.fillRect(x_0 , y, breite, dicke);
                        // y fuer naechste linie erhoehen
                        y = y + dicke + weite;
                }
               
                // farbe zurueck setzen
                g.setColor(backupColor);
                // alles andere zeichnen lassen (z.B. den slider)
                super.paint(g);
        }
       
        int calculateNumberOfLines(int space){
                // berechnet anzahl der moeglichen linien im gegebenen platz
                // pro linie braucht man (dicke + weite) platz.
                return (space / (dicke + weite));
        }
           
            
            
            
            }
     
    }
 

turtle

Top Contributor
Ich möchte dich ja nicht quälen oder an dir ein Exempel statuieren, aber...

Der Code kompiliert ja noch nicht mal:eek:
  1. The method paint(Graphics) is undefined for the type Object
  2. The method paint(Graphics) of type AUFGABE__3.DickeAdjustementListener must override or implement a supertype method
  3. WeiteAdjustmentListener cannot be resolved to a type
Sehe gerade, das da WeiteAdjustmentListener drin ist, aber als innere Klasse von DickeAdjustementListener.

Und da WeiteAdjustmentListener das Interface AdjustmentListener implementiert, ist nur die Routine adjustmentValueChanged(AdjustmentEvent e) nowendig. Folglich gibt es keine paint-Methode, die überschrieben werden könnte.

Also ist klar, warum das Applet nicht startet, oder?

Ich habe zum Test mal den Problem-Code kommentiert und dann startet es, siehe Screenshot
 

Anhänge

  • applet.PNG
    applet.PNG
    15,7 KB · Aufrufe: 21

Neue Themen


Oben