- I am trying to make a on-screen keyboard for Windows using Java.
- The result I am looking for is somewhat similar to the tablet PC input panel (Touch Keyboard Mode) on Windows 7 except that mine will be Bengali.
- But I cannot figure out how to send data from the program (when the user presses the on-screen buttons) such that it can serve as input for another program (say, a text editor).
- This link seems useful but I cannot understand it.
How can I achieve this?
My current code is:
import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.border.Border;
import javax.swing.*;
public class Bengali extends JFrame {
    private JMenuBar menuBar;
    private JButton[][] buttons;
    private int i,j;
    private String hex;
    //Constructor 
    public Bengali(){
        this.setTitle("GUI_project");
        this.setSize(1600,140);
        //menu generate method
        generateMenu();
        this.setJMenuBar(menuBar);
        //pane with null layout
        JPanel contentPane = new JPanel(null);
        contentPane.setPreferredSize(new Dimension(1600,140));
        contentPane.setBackground(new Color(192,192,192));
        buttons=new JButton[4][32];
        for(i=0;i<4;i++)
        {
            for(j=0;j<32;j++)
            {
                buttons[i][j]=new JButton();
                buttons[i][j].setBounds(0+50*j,0+35*i,50,35);
                buttons[i][j].setBackground(new Color(214,217,223));
                buttons[i][j].setForeground(new Color(0,0,0));
                buttons[i][j].setEnabled(true);
                buttons[i][j].setFont(new Font("sansserif",0,12));
                hex = "u"+Integer.toHexString(i+2432);
                buttons[i][j].setText(hex);
                buttons[i][j].setVisible(true);
                //Set methods for mouse events
                //Call defined methods
                buttons[i][j].addMouseListener(new MouseAdapter() {
                        public void mouseClicked(MouseEvent evt) {
                            but(evt,i,j);
                        }
                    });
                //adding components to contentPane panel
                contentPane.add(buttons[i][j]);
            }
            //adding panel to JFrame and seting of window position and close operation
            this.add(contentPane);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLocationRelativeTo(null);
            this.pack();
            this.setVisible(true);
        }
    }
    //Method mouseClicked for buttons[i][j]
    private void but (MouseEvent evt,int i,int j) 
    {
        //TODO
    }
    //method for generate menu
    public void generateMenu()
    {
        menuBar = new JMenuBar();
        JMenu file = new JMenu("File");
        JMenu tools = new JMenu("Tools");
        JMenu help = new JMenu("Help");
        JMenuItem open = new JMenuItem("Open   ");
        JMenuItem save = new JMenuItem("Save   ");
        JMenuItem exit = new JMenuItem("Exit   ");
        JMenuItem preferences = new JMenuItem("Preferences   ");
        JMenuItem about = new JMenuItem("About   ");
        file.add(open);
        file.add(save);
        file.addSeparator();
        file.add(exit);
        tools.add(preferences);
        help.add(about);
        menuBar.add(file);
        menuBar.add(tools);
        menuBar.add(help);
    }
    public static void build(){
        System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new Bengali();
                }
            });
    }
}
The GUI is somewhat ready. Made using SimpleGUI extension for BlueJ.
 
     
    