Avatar billede meltinis Nybegynder
16. september 2003 - 17:50 Der er 11 kommentarer og
3 løsninger

Erstatte én tast med en anden via InputStream

Jeg har følgende kode som skal erstatte space med en anden tast (her 'a')

    class TasteLytter extends java.io.InputStream implements KeyListener
    {

      private int result;
      private InputStream standardSystemIn;

      public void keyTyped(KeyEvent e) {}
      public void keyReleased(KeyEvent e) {}
      public void keyPressed(KeyEvent e)
      {
        switch(e.getKeyCode())
        {
            case KeyEvent.VK_A: result = 32;
            break;
        }

      }
      public int read() //overloader read()
      {
        return result;
      }

Hvorfor gør den det ikke? Bliver read() ikke automatisk kald af JAVA når der bliver tastet? Det er som om den ikke returnerer noget... dvs. udskriver noget!!!
Avatar billede conrad Nybegynder
16. september 2003 - 18:25 #1
har du add'et din keylistener?
component.addKeyListener(new TasteLytter());
Avatar billede arne_v Ekspert
16. september 2003 - 18:30 #2
Det der kommer aldrig til at virke.

KeyListener er GUI.

InputStream er console.
Avatar billede conrad Nybegynder
16. september 2003 - 18:32 #3
Hmm, er det i en konsol applikation eller en GUI applikation du vil gøre det?
Det virker som om du blander to ting sammen.
Avatar billede conrad Nybegynder
16. september 2003 - 18:33 #4
>>arne du er lidt hurtigere  :)
Avatar billede arne_v Ekspert
16. september 2003 - 18:33 #5
Hvis du kan leve med at space echo'er space, så læs ind normalt
og replace space til a.

Hvis ikke, så er det svært. Måske via JNI !?
Avatar billede mikkelbm Nybegynder
16. september 2003 - 18:57 #6
Ud fra hans tidligere spørgsmål

http://www.eksperten.dk/spm/401197

må man gå ud fra at det er en GUI-applikation han har gang i.
Avatar billede meltinis Nybegynder
16. september 2003 - 18:58 #7
Det hele drejer sig om at bruger skal udfylde et skema (GUI) hvori der findes CheckBox. Disse skal normalt udfyldes med space eller musen. Det ville være nemmere hvis man selv kunne vælge hvilken knap man vil udfylde med.
Avatar billede arne_v Ekspert
16. september 2003 - 19:00 #8
Men hvor kommer InputStream så ind i billedet ? (det er console)

Hvis man adder en KeyListener i sin JFrame, så burde der jo ikke
være de store problemer med at detecte keys !?
Avatar billede meltinis Nybegynder
16. september 2003 - 19:02 #9
OK... det vidste jeg ikke... Jeg fik det med console fra et andet spg. her på Eksperten...
Hvordan får jeg så programmet til at registerer det?
Avatar billede meltinis Nybegynder
16. september 2003 - 19:22 #10
Kan man overhovedet få det til at virke udover at sætte den aktuelle som checked eller ikke checked?
Avatar billede conrad Nybegynder
16. september 2003 - 19:30 #11
En checkbox er jo enten checked eller ikke checked så hvad mener du? Hvis du ikke checker den checkbox der har focus(den aktuelle) hvordan vil du så vide hvilken brugeren ønsker at checke?

Du kan godt lave en KeyListener der checker/uncheker den aktuelle chekcbox.
Avatar billede mikkelbm Nybegynder
16. september 2003 - 19:33 #12
Har lige lavet et eksempel på hvordan det kan gøres:

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

public class CheckBox extends JFrame implements KeyListener
{
    private JCheckBox box1 = new JCheckBox("Box1");
    private JCheckBox box2 = new JCheckBox("Box2");
    private JCheckBox box3 = new JCheckBox("Box3");
   
    public CheckBox()
    {
        setSize(300,300);

        JPanel panel = new JPanel();
        panel.add(box1);
        panel.add(box2);
        panel.add(box3);
       
        box1.addKeyListener(this);
        box2.addKeyListener(this);
        box3.addKeyListener(this);
       
        Container con = getContentPane();
        con.add(panel);
    }
   
    public void keyTyped(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
    public void keyPressed(KeyEvent e)
    {
        switch(e.getKeyCode())
        {
            case KeyEvent.VK_A : box1.setSelected(true);    break;
            case KeyEvent.VK_B : box2.setSelected(true);    break;
            case KeyEvent.VK_C : box3.setSelected(true);    break;
        }
    }

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

Det minder i hvert fald om det du søger...
Avatar billede meltinis Nybegynder
16. september 2003 - 20:03 #13
Jeg bliver desværre nødt til at slutte for i aften.. kigger på det i morgen. Foreløbig tak for hjælpen.
Avatar billede meltinis Nybegynder
17. september 2003 - 00:17 #14
Jamen nu virker det jo :D Tusind tak allesammen... Jeg har fordelt pointene efter indsats...
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