Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4799500

dead key pressed/released twice should produce non-dead character on Unix

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P4
    • Resolution: Cannot Reproduce
    • Affects Version/s: 1.4.2
    • Fix Version/s: None
    • Component/s: client-libs
    • Labels:
    • Subcomponent:
    • CPU:
      x86
    • OS:
      linux_redhat_6.1

      Description

      Non-Java applications can produce ascii versions of dead keys by typing
      the dead key twice in a row. For example, in a German xmodmap, dead-acute pressed and released twice produces apostrophe. dead-circumflex pressed and released twice produces ascii circumflex.

      The test case below can be used to see that this does not work in JDK1.4.2
      with lightweight TextComponents (including Swing).

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

      public class MySwingTest extends JApplet implements KeyListener, ActionListener {

          JTextField jtf = null;
          JTextArea jta = null;

          public static void main(String[] args) {
              JFrame frame = new JFrame("MySwingTest");
              JPanel p = new JPanel();

              MySwingTest applet = new MySwingTest();
              applet.init();

              p.add("Center", applet);
              frame.getContentPane().add(p);

              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.pack();
              frame.setSize(850, 200);
              frame.setVisible(true);

              applet.start();
          }

          public void init() {
              JLabel jl = new JLabel("Enter characters");

              jtf = new JTextField("Hello World", 20);
              jtf.addKeyListener(this);
              jtf.addActionListener(this);
              jta = new JTextArea("Hello World", 4, 30);
              jta.addKeyListener(this);

              // the default layout manager for a JApplet is a BorderLayout
              this.getContentPane().setLayout(new FlowLayout());
              this.getContentPane().add(jl, FlowLayout.LEFT);
              this.getContentPane().add(jtf, FlowLayout.CENTER);
              this.getContentPane().add(jta, FlowLayout.RIGHT);
          }

          public void start() {
              jtf.requestFocus();
          }

          public void keyPressed(KeyEvent evt)
          {
              printKey(evt);
          }

          public void keyTyped(KeyEvent evt)
          {
              printKey(evt);
          }

          public void keyReleased(KeyEvent evt)
          {
              printKey(evt);
              System.out.print("\n");
          }

          public void actionPerformed(ActionEvent evt)
          {
              System.out.print("\n");
              System.out.print("Action Event\n");
              System.out.println(evt.toString());
              System.out.print("\n");
          }

          protected void printKey(KeyEvent evt)
          {
              switch(evt.getID())
              {
                case KeyEvent.KEY_TYPED:
                  break;
                case KeyEvent.KEY_PRESSED:
                  break;
                case KeyEvent.KEY_RELEASED:
                  break;
                default:
                  System.out.println("Other Event ");
                  return;
              }

              System.out.print("params= " + evt.paramString() + " \n" +
                "KeyChar: " + evt.getKeyChar() + " = " + (int) evt.getKeyChar() +
                " KeyCode: " + evt.getKeyCode() +
                " Modifiers: " + evt.getModifiers());
              if (evt.isActionKey())
                  System.out.print(" Action Key");
              System.out.print("\n");

              System.out.println("keyText= " + evt.getKeyText(evt.getKeyCode())
                + "\n");
          }

      }

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              yan Yuri Nesterenko
              Reporter:
              ehawkessunw Eric Hawkes (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: