Avatar billede bumle90 Nybegynder
04. december 2001 - 19:04 Der er 10 kommentarer og
1 løsning

ændring af cursor

Hej jeg sad og tænkte på om der en måde hvorved man kan ændre udseendet på cursoren. Fx. hvis man klikker på et bestemt felt så ændrer cursoren udseende til et imageicon eller noget lignende. Og så når man trykker et andet sted, går cursoren tilbage til sin oprindelige form. Jeg bruger swing.
Avatar billede otis Nybegynder
04. december 2001 - 19:06 #1
det er javascript, ikke java... forkert kategori :/
Avatar billede bumle90 Nybegynder
04. december 2001 - 19:08 #2
ehhh hvad snakker du om???
Jeg kender godt forskel på java og javascript mester. Swing har ikke en disse med javascript at gøre
Avatar billede otis Nybegynder
04. december 2001 - 19:15 #3
det vel rent faktisk css du skal have fat i ? :)
Avatar billede bumle90 Nybegynder
04. december 2001 - 19:21 #4
hehe...jeg tror faktisk du er i den forkerte kategori :)
CSS er stylesheets. Noget man bruger til html dokumenter. Det her er java...og jeg laver i swing...altså dvs. noget der overhovedet ikke har noget med hverken javascript,css,html eller nogle som helst andre editeringssprog at gøre
Avatar billede otis Nybegynder
04. december 2001 - 19:23 #5
jeg har nok tænkt på du ville ha det op som et website ? ;)
Avatar billede bumle90 Nybegynder
04. december 2001 - 19:25 #6
nej det tror jeg ikke du kan med swing....ikke så vidt jeg ved ihvertfald :D
Avatar billede otis Nybegynder
04. december 2001 - 19:26 #7
hehe, min fejl ;)
Avatar billede bumle90 Nybegynder
04. december 2001 - 19:35 #8
no problemo ;)
Avatar billede mallemab Nybegynder
04. december 2001 - 20:07 #9
Jeg håber at nedenstående kan hjælpe dig igang. Eksemplet skulle være lige til at gå til. Jeg har lavet det med en Cirkel som cursor, men det skulle være muligt at tegne hvadsomhelst.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;

public class Caret
{
    public static void main(String args[])
    {
        JFrame frame = new JFrame(\"Caret demo\");
        frame.addWindowListener(new WindowAdapter()
            {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
        JTextArea area = new JTextArea(10, 40);
        area.setCaret(new MyCaret());
        JPanel panel = new JPanel();
        panel.add(area);
        frame.getContentPane().add(\"Center\", panel);
        frame.pack();
        frame.setVisible(true);
    }
}

class MyCaret extends DefaultCaret
{
    // draw the caret
    public void paint(Graphics g)
    {
        if (!isVisible())
            return;
        try
        {
            JTextComponent c = getComponent();
            int dot = getDot();
            Rectangle r = c.modelToView(dot);
            g.setColor(c.getCaretColor());
            g.drawOval(r.x+5, r.y+5, 10, 10);
        }
        catch (BadLocationException e)
        {
            System.err.println(e);
        }
    }
}
Avatar billede mallemab Nybegynder
04. december 2001 - 20:49 #10
Her er et eksempel med et billede. Problemet er at når du bruger et billede der er større end standard cursoren, bliver kun den del af billedet der befinder sig i standardcursorens rectangel opdateret, derfor skal damage metoden overskrives så man opdaterer i hele billedets område.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;

class MyCaret extends DefaultCaret
{
    Image i;
   
    public MyCaret(String mingif)
    {
        super();
        i = (new ImageIcon(mingif)).getImage();
    }
   
    // draw the caret
    public void paint(Graphics g)
    {
       
        if (!isVisible())
            return;
        try
        {
            JTextComponent c = getComponent();
            int dot = getDot();
            Rectangle r = c.modelToView(dot);
            g.setColor(c.getCaretColor());
            g.drawImage(i,r.x, r.y, null);
        }
        catch (BadLocationException e)
        {
            System.err.println(e);
        }
    }
   
    // specify the size of the caret for redrawing
    // and do repaint() -- this is called when the
    // caret moves
      protected synchronized void damage(Rectangle r)
    {
        if (r == null)
          return;
        x = r.x;
        y = r.y ;
        width = i.getWidth(null);
        height = i.getHeight(null);
        repaint();
      }
}

public class Caret
{
    public static void main(String args[])
    {
        JFrame frame = new JFrame(\"Caret demo\");
        frame.addWindowListener(new WindowAdapter()
            {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
        JTextArea area = new JTextArea(10, 40);
        area.setCaret(new MyCaret(\"mygif.gif\"));
        JPanel panel = new JPanel();
        panel.add(area);
        frame.getContentPane().add(\"Center\", panel);
        frame.pack();
        frame.setVisible(true);
    }
}
Avatar billede bumle90 Nybegynder
04. december 2001 - 21:10 #11
tak skal du have :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester