Avatar billede stig-ole Nybegynder
08. oktober 2004 - 01:17 Der er 5 kommentarer og
1 løsning

Markør i JTextArea er forkert (opdateres ikke rigtig)

Hej,

Jeg har en keyListener til at styre, at man ikke må taste bogstaver ind på 1. og 2. linie. Men godt på 3. og de følgende linier.

Problemet består af, at få den rigtige linie ud fra der hvor markøren er (y-positionen). Den viser for det meste det rigtige tal, men hvis jeg f.eks. trykker på pil op og taster et bogstav, så viser den linien, som den kom fra og først næste gang er den rigtig. Det er som om at man skal opdaterer den lige inden, men jeg har ikke fundet løsningen.

Her er koden:
public void keyTyped(KeyEvent e)
{
  char c = e.getKeyChar();
  int linie=0;
  try
  {
      linie=(int)((textBeskrivelse.getCaret().getMagicCaretPosition().getY())/18);
      System.out.println (linie);
      if(linie<2)
      {
        e.consume();
      }
  }
  catch (Exception ex)
  {
  }
}
public void keyReleased (KeyEvent e)
{
}
public void keyPressed(KeyEvent e)
{
}
Avatar billede _carsten Nybegynder
08. oktober 2004 - 20:20 #1
Prøv lige om denne opfylder behovet

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JTextArea;

public class ExpTextArea extends javax.swing.JFrame{
    public ExpTextArea(){
        getContentPane().add(new Area());
        setSize(300,300);
    }
   
    public static void main(String[] args){
        new ExpTextArea().setVisible(true);
    }
}


class Area extends JTextArea implements KeyListener{
    public Area() {
        addKeyListener(this);
        height = getRowHeight();
    }
   
    public void keyPressed(java.awt.event.KeyEvent e) {
    }
   
    public void keyReleased(java.awt.event.KeyEvent e) {

    }
   
    public void keyTyped(java.awt.event.KeyEvent e) {
        try{
            line = modelToView(getCaretPosition()).y / height;
            if( Character.isLetter(e.getKeyChar()) && line <= 1){
                e.consume();
            }
        }
        catch (javax.swing.text.BadLocationException b){
            b.printStackTrace();
        }
    }
   
    private int height, line;
}
Avatar billede stig-ole Nybegynder
09. oktober 2004 - 02:29 #2
Det er perfekt, der er point i sigte ;-)
Kom bare med et svar.
Avatar billede _carsten Nybegynder
09. oktober 2004 - 09:07 #3
Kommer her.
Avatar billede stig-ole Nybegynder
09. oktober 2004 - 12:26 #4
Tak for hjælpen.
Avatar billede stig-ole Nybegynder
09. oktober 2004 - 12:26 #5
Prøver lige igen
Avatar billede stig-ole Nybegynder
09. oktober 2004 - 12:28 #6
Så skulle den være der. Første gang jeg skulle acceptere...
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