Graphics g, AdjustmentEvent e

Status
Nicht offen für weitere Antworten.

A3XX

Bekanntes Mitglied
Hi

Ich bin (immer noch :) an meinem Lehrbuch und mir bereitet einfach dieses Graphics g und Event e Probleme...für was ist das? Was bringt das?!

Und bisher hat der Autor immer folgendes gecodet:

Code:
public void paint(Graphics g){
   g.drawString("Hallo du", 100, 100);
}

Und jetzt hat er in einem Beispiel (damit nicht alles wieder gelöscht wird mittels paint) folgendes gecodet:

Code:
public void adjustmentValueChanged(AdjustmentEvent e) {
   Graphics g = getGraphics();
   currentX = slider.getValue();
   g.drawLine(0, currentY, currentX, currentY);
   currentY = currentY + 5;
}

Nun kapiere ich gleich einiges nicht: Was macht die getGraphics Methode? Was bewirkt das Graphics g = ? Und der Autor sagte mal man müsse in jeder Methode dieses Graphics g deklarieren (oder an diese übergeben) wie in Beispiel 1, aber wieso muss er jetzt das irgendwie nicht?
Und was ist in diesen Buchstaben (g und e) gespeichert?! Wieso muss man die hinschreiben, vorallem das e, das man gar nicht braucht?! Sind diese Buchstaben fest oder könnte man auch z.B. m gebrauchen?!

Sorry bin halt noch ganz am Anfang und da blick ich nich durch :oops: [/code]
 
M

Mister XY Unbekannt

Gast
Hallo,

das ist mal eine Frage die ich beantworten kann
Das Graphics Objekt ist eine Variable die Graphikmethoden beinhaltet wie drawOval drawString drawLine drawEllipse
drawRect drawArc und diese brauchst du um deine Linie weiter unten zeichnen zu können.

Das e ist ein AdjustmentEvent um auf Bewegungen deines sliders (graphische SWING Komponente) reagieren zu können Soweit ich das verstanden habe zeichnest du jedesmal wenn du deinen slider bewegst eine Linie die sich nach unten zieht. Für verschiedene AWT und SWING Komponenten gibt es verschiedene Listener Interfaces die du implementieren musst damit deine Komponente auf Ereignisse von dir reagieren kann und verschiedene Listener Methoden wie ActionEvent, Windowevent, AdjustmentEvent, ItemEvent, MouseEvent, KeyEvent, ComponentEvent, FocusEvent, ... die du schreiben musst um zu sagen was sie machen soll. Komponenten sind von der Klasse Component abgeleitete Objekte die deine Container(Panel, Frame, Window, Dialog) um einen neuen Container oder aktive Komponenten(Button, Scrollbar, Choice, Checkbox, Label, List, TextComponent, TextArea, TextField) erweitern Diese haben eigene ListenerMethoden und eigene ListenerEvents und Listener Interfaces

zB

Code:
class Dialoge extends Dialog implements ActionListener{  //<< Listener Interface implementieren 
    public Dialoge(Frame parent) 
    {
    super(parent,"Dialoge",true);
    setBackground(Color.lightGray);
    
    Panel panel = new Panel();
    panel.setLayout(null);
    add(panel);
    
    Button anlegen = new Button("Anlegen");
    anlegen.setBounds(20,10,95,25);
    anlegen.addActionListener(this);        // << registrieren des Listeners um auf Ereignisse der Komponente        reagieren zu können  
    
    panel.add(anlegen);
    
    Button ändern = new Button("Ändern");
    ändern.setBounds(135,10,95,25);
    ändern.addActionListener(this);
    panel.add(ändern);
    
    Button löschen = new Button("Löschen");
    löschen.setBounds(250,10,95,25);
    löschen.addActionListener(this);
    panel.add(löschen);
       
    Label mess = new Label("Nichts gedrückt");
    mess.addActionListener(this);
    mess.setBounds(20, 280, 50, 30); 
    panel.add(mess);
    
    addWindowListener(new WindowAdapter() 
    {
        public void windowClosing(WindowEvent e) 
        {
        endDialog();     //<< Schließen des Fensters mit einem Komponente am oberen rechten Bildschirmrand
        }
    });	
    pack();
}
	
    public void actionPerformed(ActionEvent e) //<< Listener Events um zu sagen was getan werden soll    {
    Object quelle = e.getSource(); 
        if(quelle instanceof Button)          //<< Abfragen welche Komponente das Listener Event ausgelöst hat
        {
            if(e.getActionCommand().equals("Anlegen"))
            {
            mess.setText("Anlegen gedrückt");           //<< Darauf reagieren
            }
                else if(e.getActionCommand().equals("Ändern"))
	{
    	mess.setText("Ändern gedrückt");
    	}
    	    else if(e.getActionCommand().equals("Löschen"))
    				{
    				mess.setText("Löschen gedrückt");
    				}
			}
		}
		
    public void endDialog()
    {
    setVisible(false);
    dispose();
    ((Window)getParent()).toFront();
    getParent().requestFocus();
    }
}

Übrigens kann mir wer sagen warum dieses Programm nicht funktioniert?

Edit:
1. Benutze bitte Code-tags (hab sie jetzt reingeflickt), ist einfach übersichtlicher.
2. Wenn du Fragen hast, mach ein neues Topic auf. Heute wurde schoneinmal einer deiner Beiträge gelöscht, weil er zu OT war.

Beni
 
B

Beni

Gast
@A3XX

Also so toll ist dieser Code nicht... (solch ein Konstrukt einzusetzen ist in höchstem Masse unschön und gefährlich (wenn man die API genau liest, weiss man wieso :wink: ))
Informationen über Methoden kannst du hier finden (in der API)

"Graphics g = " weisst der Variable g vom Typ Graphics eine Referenz, die von "getGraphics" kommt zu.

Deklarieren oder übergeben muss man sie nur, wenn man sie auch verwenden will (was ist das für ein Buch, kommt mir suspekt vor... oder du schreibst komisch ab ???:L )
Und der Autor daklariert g: "Graphics g = " ist die Deklaration.

In den Buchstaben sind Referenzen (Links, Verweise) auf andere Objekte gespeichert.

Die muss man hinschreiben, damit man sie benutzen kann (wie willst du sonst auf die Objekte zugreiffen).

Das e wurde in einem Interface definiert, und ist in diesem Fall zwingend vorgeschrieben (oder das Progi bekommt ein seltsames Verhalten).

Natürlich kann man die ersetzen, du kannst auch "Graphics theOnlyGraphicsInThisMethode = " schreiben. Das ist zwar aussagekräftiger, aber umständlicher.


So, lies in den Büchern weiter (und probier selbst mal ein bisschen aus).

Es gibt übrigens auch gute Onlinebücher:
http://www.javabuch.de/
http://www.galileocomputing.de/openbook/javainsel3/index.htm

Am besten liest du alle gleichzeitig, da auch die Autoren Lücken in ihrem Wissen haben...

mfg Beni
 

A3XX

Bekanntes Mitglied
Hm ok, schon einiges klarer, aber was ich eben noch nicht verstehe:

Der Autor sagte (das STück Code is natürlich nur ein Schnipsel des ganzen :) : Mit paint und repaint wird alles gelöscht und neu gezeichnet...

aber eben mit dem "Graphics g = " nicht...wieso?!
 
M

Mister XY Unbekannt

Gast
Ich find das toll, jetzt ist mir schon zweimal geholfen worden

duct tape is like the force! It has a light side - a dark side

and it holds the universe together
 
B

Beni

Gast
A3XX hat gesagt.:
aber eben mit dem "Graphics g = " nicht...wieso?!
Weil das niergends die "löschen"-Methode aufruft. Paint hingegen wird von einer Methode aufgerufen, die zuerst noch löscht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Umgang mit Graphics unklar : Erstellung u Uebergabe an Funktion Java Basics - Anfänger-Themen 18
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
J Erste Schritte drawLine Methode der Graphics Klasse Java Basics - Anfänger-Themen 2
J GUI / Graphics Java Basics - Anfänger-Themen 2
H Graphics / repaint Java Basics - Anfänger-Themen 8
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Cast java.awt.Graphics Java Basics - Anfänger-Themen 7
Azazel (Anfängerhilfe) awt.Graphics Schwierigkeiten Java Basics - Anfänger-Themen 6
I Methoden public void paintComponent (Graphics g) Java Basics - Anfänger-Themen 4
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
S Farbige Lebensleiste mit Graphics? Java Basics - Anfänger-Themen 10
S Ein Graphics Obejct mehrmals mit denselben Eigenschaften zeichnen lassen?!?!? Java Basics - Anfänger-Themen 4
S G Graphics Java Basics - Anfänger-Themen 1
thet1983 g.Graphics löschen? Java Basics - Anfänger-Themen 1
M Probleme mit paint() aus java.awt.Graphics Java Basics - Anfänger-Themen 2
A EAN13 Font auf graphics g erzeugt Monospaces Java Basics - Anfänger-Themen 14
N Graphics to png Java Basics - Anfänger-Themen 10
N Methode draw(Graphics g) aufrufen Java Basics - Anfänger-Themen 6
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
J Problem mit paint(Graphics g) Java Basics - Anfänger-Themen 4
J Jtable änderung soll graphics aktualisieren Java Basics - Anfänger-Themen 4
J JAVA Graphics Java Basics - Anfänger-Themen 5
A Graphics Objekt verhält sich merkwürdig Java Basics - Anfänger-Themen 2
G DRUCKEN von z.B. eines JFrame über print(Graphics g) Java Basics - Anfänger-Themen 9
Maxim6394 Probleme mit Graphics Java Basics - Anfänger-Themen 7
W von Graphics in BufferedImage Java Basics - Anfänger-Themen 10
M OOP Graphics immer selbstbezihend Java Basics - Anfänger-Themen 12
K Problem mit Parameter von paint(Graphics g) Java Basics - Anfänger-Themen 3
T Transparente Bilder mit Graphics zeichnen Java Basics - Anfänger-Themen 17
H Probleme mit Graphics G Java Basics - Anfänger-Themen 2
M Schiebepuzzle: MouseListener und Graphics? Java Basics - Anfänger-Themen 6
J Graphics g Java Basics - Anfänger-Themen 4
H Probleme mit Graphics Java Basics - Anfänger-Themen 5
B MouseListener & Graphics Java Basics - Anfänger-Themen 10
M Graphics zeichnen Java Basics - Anfänger-Themen 2
F Graphics PDFBox Java Basics - Anfänger-Themen 9
M kurze Frage zu Graphics Java Basics - Anfänger-Themen 5
Luk10 Buch für Swing/Awt/Graphics Java Basics - Anfänger-Themen 4
M Java Graphics etc. Java Basics - Anfänger-Themen 2
M Concurrency und Graphics Java Basics - Anfänger-Themen 9
F Was ist Graphics g wirklich? Java Basics - Anfänger-Themen 5
J Klasse Graphics Nullpointerexception Java Basics - Anfänger-Themen 8
P Frage zu Graphics Java Basics - Anfänger-Themen 2
O graphics methode zeigt mein bild nicht an Java Basics - Anfänger-Themen 7
F Zweite Graphics-Methode wird nicht ausgeführt Java Basics - Anfänger-Themen 4
T rotes herz public void paint(Graphics g) Java Basics - Anfänger-Themen 2
G paintComponent(Graphics g) Java Basics - Anfänger-Themen 2
eQui Oberfläche mit Graphics zeichnen Java Basics - Anfänger-Themen 11
S Dicke bei Graphics Ovject einstellen Java Basics - Anfänger-Themen 2
V KSKB zum Verständnis von Graphics und paintComponent Java Basics - Anfänger-Themen 6
G mit Graphics erzeugte Strings verschwinden sofort wieder Java Basics - Anfänger-Themen 7
T Graphics von java.awt.Frame soll sich inhalt merken Java Basics - Anfänger-Themen 3
G Graphics-Object skalieren Java Basics - Anfänger-Themen 9
G Constructor & Graphics g Java Basics - Anfänger-Themen 5
F Frage zum Graphics Objekt Java Basics - Anfänger-Themen 3
D Instanz von Graphics in run() Java Basics - Anfänger-Themen 8
B Mouseevents und Graphics Java Basics - Anfänger-Themen 11
D Abstrakte Klasse Graphics Java Basics - Anfänger-Themen 3
W Verständisfrage zu Graphics Objekt Java Basics - Anfänger-Themen 3
P umwandeln von graphics nach image Java Basics - Anfänger-Themen 4
Dilandau paint(Graphics g) { unbekannt in try{} / catch{} }? Java Basics - Anfänger-Themen 5
S Graphics Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben