1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

quicktime for java

  • michaelh
  • 10. November 2007 um 00:00
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • michaelh
    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
    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
    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
  • michaelh
    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
    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.

  • michaelh
    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
    Punkte
    376
    Beiträge
    64
    • 12. November 2007 um 15:09
    • #7

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

    lg Clemens

  • michaelh
    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
    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

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum