Avatar billede birkis Nybegynder
24. april 2004 - 20:04 Der er 13 kommentarer

Metode for at hente koordinater (x, y)

Har Java en metode for at hente koordinater fra cursor?
Avatar billede riversen Nybegynder
24. april 2004 - 20:07 #1
det kan du vha. MouseEvent objekt.  Så du skal nok bruge en mousemotionlistener eller noget på din applikation
Avatar billede birkis Nybegynder
24. april 2004 - 20:13 #2
Hmmm... Jeg tænker ikke på musen, men på den markør som skriver tekst.

Eks.: Når jeg skriver tekst i jTextField1, ønsker jeg at vide x og y placering for markøren.

Gælder dit svar alligevel?
Avatar billede arne_v Ekspert
24. april 2004 - 20:23 #3
Hvis du ønsker pixel coordinater så lyder riversens svar helt rigtigt.
Avatar billede _carsten Nybegynder
24. april 2004 - 20:29 #4
Indtil videre er jeg nok lidt uenig

Du bør kunne gøre det på følgende måde

Rectangel rect = mitTextArea.modelToView( mitTextArea.getCaretPosition() );
System.out.println("X = " + rect.getX() + ", Y = "  + rect.getX());
Avatar billede _carsten Nybegynder
24. april 2004 - 20:52 #5
Fik lige tid til at strikke et eksempel sammen

Sådan kan det se ud, prøv at skrive i feltet.

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

public class JFrame_4 extends JFrame {

    public JFrame_4() {
        initComponents();
        setSize(300,300);
    }

    private void initComponents() {
        jTextArea1 = new JTextArea();

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                exitForm(evt);
            }
        });

        jTextArea1.setWrapStyleWord(true);
        jTextArea1.addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent evt) {
                down(evt);
            }
        });

        getContentPane().add(jTextArea1, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void down(java.awt.event.KeyEvent evt) {
        try{
            rect = jTextArea1.modelToView(jTextArea1.getCaretPosition() );
            System.out.println("X = " + rect.x + ", Y = "  + rect.y);
        }
        catch (BadLocationException b){
            b.printStackTrace();
        }

    }

    private void exitForm(WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new JFrame_4().show();
    }

    private JTextArea jTextArea1;
    private Rectangle rect;
}
Avatar billede birkis Nybegynder
28. april 2004 - 16:02 #6
_carsten >> Godt forslag. Desværre kan jeg ikke umiddelbart bruge de to tal din metode giver, til det jeg ønsker. Min idé var at hente tekstmarkørens placering (x, y) og bruge disse koordinater til en JDialog. (Min JDialog skulle så åbnes i x, y.)

riversen, arne_v >> Det forvirrer mig at bruge noget der har med musen at gøre (MouseEvent/mousemotionlistener) til dette... Mener I stadig det er rigtig efter jeg har forsøgt at forklare bedre?
Avatar billede birkis Nybegynder
28. april 2004 - 16:22 #7
Øv... For at undgå misforståelse:

Det er selvfølgelig muligt at åbne en JDialog med de to tal fra _carstens metode, men den åbnes ikke på det rigtige sted.
Avatar billede riversen Nybegynder
28. april 2004 - 16:23 #8
jeg har ingen bud på at finde x,y for markøren
Avatar billede _carsten Nybegynder
28. april 2004 - 20:31 #9
Hvis det er planen med en JDialog, skal du først have x,y for dit JTextArea, dertil lægger du x,y for cursor og bruger setLocation(x,y) på din JDialog

Så skulle det rulle.
Avatar billede birkis Nybegynder
04. maj 2004 - 14:07 #10
_carsten >> Sådan! :-)

Vil du også hjælpe mig med hvordan jeg kan fjerne X'et i højre hjørne?
Avatar billede _carsten Nybegynder
04. maj 2004 - 17:56 #11
Selvfølgelig - hvis det er X'et til at lukke dialogen med, så kan du så vidt jeg husker ikke kun fjerne X'et, men skal fjerne hele titellinien

Sådan:    setUndecorated(true);

Hvis du vil bibeholde titelinien, må du vende tilbage, så må jeg lægge hovedet i blød!
Avatar billede birkis Nybegynder
04. maj 2004 - 18:17 #12
Ja, det er X'et til at lukke dialogen med. Det skal egentlig kun være muligt at lukke den ved at vælge et element, eller fra den "oprindelige" JFrame.

Jeg har fundet setUndecorated(boolean), men jeg vil gerne beholde titellinien... :-)
Avatar billede _carsten Nybegynder
04. maj 2004 - 18:58 #13
Av - den kan jeg ikke lige ryste ud af ærmet, men vender tilbage når/hvis jeg finder løsningen
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