1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

quicktime for java

  • michaelh
  • 10. November 2007 um 00:00
  • Unerledigt
  • michaelh
    6
    michaelh
    Mitglied
    Punkte
    330
    Beiträge
    50
    • 10. November 2007 um 00:00
    • #1

    hallo!

    habe ein problem mit dem repaint!
    ich möchte vom jslider den wert auslesen und dann dementsprechend den text ändern, leider erfolglos....

    PHP
    import quicktime.*;
    import java.awt.*;
    import java.awt.Graphics; 
    import java.awt.Graphics2D;
    import javax.swing.*;
    import javax.swing.event.ChangeListener;
    import javax.swing.event.ChangeEvent;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.*;
    
    
    public class DrawExample extends JPanel implements ActionListener,
    WindowListener,
    ChangeListener
    {
        protected JSlider slider = new JSlider(0, 300); 
        int pxwidth=50;
        int pxhight=200;
    
        public void setPxWidth(int width){
            pxwidth += width;
        }
        public void setPxHight(int hight){
            pxhight += hight;
        }
    
        int getPxWidth(){
            return pxwidth;
        }
    
        int getPxHight(){
            return pxhight;
        }
    
        public DrawExample()
        {
        }
    
    
         public void paintComponent(Graphics g)
         { 
    
             Graphics2D g2d = (Graphics2D)g; //Erzeuge Graphics2D durch casting07. Graphics2D g2d = (Graphics2D)g; //Erzeuge Graphics2D durch casting 
             g2d.setColor(Color.red); //Farbe setzen 
             g2d.setFont(new Font("Dialog", Font.BOLD, 30)); //Schriftart defenieren 
             g2d.drawString("Java 2D rockZ!", pxwidth, pxhight);           //Text ausgeben 
         }  
         public static void main(String args[])
         {     
    
                 //Frames & Panels
                JFrame frame= new JFrame("Java2D Example"); 
                JPanel panel = new JPanel();
    
                panel.setSize(200, 200);
    
                frame.getContentPane().add(new DrawExample()); 
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
                frame.setSize(300, 300); //Groessedes JFrame 
                frame.setVisible(true); //JFrameanzeigen
                frame.getContentPane().add(panel);
    
                //Components
    
                //Slider
                JSlider slider = new JSlider(0, 300);     
                slider.setMinorTickSpacing(1);
                slider.setMajorTickSpacing(10);
                ChangeListener aChangeListener = new DrawExample();
                slider.addChangeListener(aChangeListener);
                panel.add(slider);
    
    
         } 
    
         //Slider
         public synchronized void stateChanged(ChangeEvent e) {
             JSlider source = (JSlider)e.getSource();
             setPxWidth(source.getValue());
             pxwidth = 5;
             pxhight = 5;
             System.out.println(pxwidth);
             repaint();
    
            }
     }
    Alles anzeigen
  • phudy
    10
    phudy
    Mitglied
    Reaktionen
    12
    Punkte
    1.087
    Beiträge
    182
    • 10. November 2007 um 11:44
    • #2

    hab ich paradeisa auf den augen, oder ueberseh ich da die verwendung von quicktime?

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 10. November 2007 um 13:32
    • #3
    Zitat von phudy

    hab ich paradeisa auf den augen, oder ueberseh ich da die verwendung von quicktime?

    Nein, das siehst Du richtig. Dazu werden die Interfaces ActionListener, WindowListener und ChangeListener implementiert, jedoch fehlen 8 Methoden, die in diesen Interfaces definiert sind. Konnte das Beispiel deshalb leider nicht testen.

    Uebrigens: Viel einfacher geht das mit JavaFX:

    PHP
    import javafx.ui.*;
    import javafx.ui.canvas.*;
    
    
    /** @autor: Benjamin Ferrari */
    
    
    class CircleModel{ attribute radius: Integer;}
    var circle = CircleModel{ radius: 0};
    
    
    Frame {
      title: "Example for a Slider in Java FX", visible: true, height:250
      content: GridPanel {
        rows: 1, columns: 2
        cells:
          [Slider {min: 0, max: 100, value: bind circle.radius},
           Canvas {content: Circle { cx: 80, cy: 80, radius: bind circle.radius, 
                                     fill: yellow, stroke: green, strokeWidth: 2}}]}};
    Alles anzeigen

    lg, Benjamin Ferrari, bookworm.at

  • michaelh
    6
    michaelh
    Mitglied
    Punkte
    330
    Beiträge
    50
    • 10. November 2007 um 22:34
    • #4

    hm, eigentlich fehlt da keine methode, ich hab auch nur die eine klasse :) ....
    das es andes geht schon klar :) aber ich will das mit java2d machen also mit drawString!
    kannst du mir da dabei helfen??

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 10. November 2007 um 23:44
    • #5
    Zitat von michaelh

    hm, eigentlich fehlt da keine methode, ich hab auch nur die eine klasse :) ....

    Du implementierst in deiner Klasse die Interfaces ActionListener, WindowListener und ChangeListener.

    D.h. Du musst alle Methoden, die in diesen Interfaces beschrieben stehen, implementieren. Ansonsten kann Dein Code nicht kompilieren.

    Zitat

    kannst du mir da dabei helfen?


    Ja.

    Du erstellst derzeit von der Klasse DrawExample zwei verschiedene Instanzen: Eine fuegst Du zu Deinem JFrame hinzu:

    PHP
    frame.getContentPane().add(new DrawExample());

    die andere erwartet das Event vom slider:

    PHP
    ChangeListener aChangeListener = new DrawExample();
    slider.addChangeListener(aChangeListener);

    das bedeutet das die Instanz, die das ChangeEvent vom Slider empfaengt, gar nicht Teil Deines Fensters ist. Und die Instanz die tatsaechlich am Fenster haengt, bekommt das Event nicht.

    Also um Deinen code zum Laufen zu bringen:

    - Entferne die Interfaces ActionListener und WindowListener, denn die verwendest Du derzeit eh nicht.

    - Erstelle eine einzige Instanz von DrawExample, und uebergib diese Instanz dann einmal an das Frame (in ihrer Funktion als JCompontent) und einmal an den JSlider (in ihrer Funktion als ChangeListener).

    - seit java 6 musst du nicht mehr JFrame.getContentPage().add() verwenden. Du kannst/solltest stattdessen einfach die add() Methode benutzen.

    lg, Benjamin Ferrari, bookworm.at

  • michaelh
    6
    michaelh
    Mitglied
    Punkte
    330
    Beiträge
    50
    • 12. November 2007 um 13:51
    • #6

    danke für deine hilfe!
    es funktioniert jetzt!

    nur hab ich ein problem, dass der ursprungtext bleibt und der neue txt drübergeschrieben wird, bzw an die neue position gestellt wird! der text mit der alten position bleibt aber!

    wie muss ich das ändern, damit das nur upgedatet wird?

    danke & mfg

  • _Linuxhippy
    6
    _Linuxhippy
    Mitglied
    Reaktionen
    1
    Punkte
    376
    Beiträge
    64
    • 12. November 2007 um 15:09
    • #7

    wie wärs mit fillRect() über den alten Text?

    lg Clemens

    To avoid horrible confusion, please pronounce the G in the word GNU when it is the name of this project.

  • michaelh
    6
    michaelh
    Mitglied
    Punkte
    330
    Beiträge
    50
    • 12. November 2007 um 21:24
    • #8

    das mit refill geht auch nicht, aber wenn ich das fenster dann verschiebe oder größer mache nach dem verschieben des sliders, dann ist der text an der gewünschten position!
    komisch, warum ist das so?

  • _Linuxhippy
    6
    _Linuxhippy
    Mitglied
    Reaktionen
    1
    Punkte
    376
    Beiträge
    64
    • 13. November 2007 um 12:45
    • #9

    weil sich dann auch die darunterliegenden Components neu zeichnen müssen.

    Wenn du vor dem drawString ein fillRect machst, das so groß ist wie dein Component dann klappt das, garantiert.

    lg Clemens

    To avoid horrible confusion, please pronounce the G in the word GNU when it is the name of this project.

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung