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?
Annonceindlæg fra Infor
24. april 2004 - 20:07
#1
det kan du vha. MouseEvent objekt. Så du skal nok bruge en mousemotionlistener eller noget på din applikation
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?
24. april 2004 - 20:23
#3
Hvis du ønsker pixel coordinater så lyder riversens svar helt rigtigt.
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());
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; }
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?
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.
28. april 2004 - 16:23
#8
jeg har ingen bud på at finde x,y for markøren
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.
_carsten >> Sådan! :-) Vil du også hjælpe mig med hvordan jeg kan fjerne X'et i højre hjørne?
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!
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... :-)
Av - den kan jeg ikke lige ryste ud af ærmet, men vender tilbage når/hvis jeg finder løsningen
Kurser inden for grundlæggende programmering