Genvejstaster i simpelt program
Hej,Jeg er igang med et simpelt program i Java, som et led i et programmeringsfag jeg har.
Programmet der simulerer interfacet på en mobiltelefon, har et tekstdisplay hvor der skal stå tal og simulerer et tlf.nr., en række knapper fra 0-9 og to knapper med funktionerne "Call" og "Clear". Desuden er der et statusfelt forneden, der ændrer sig når man trykker på Call og Clear.
Desuden er der også lavet en menu, med funktionen quit. Den har jeg endda fået lavet således at genvejstasten CRTL+Q aktiverer funktionen.
Nu er problemet blot at jeg ikke kan få den til at virke med andre taster også. Mit ønske er, at den kan lægges ind under metoden addButton, som en generel funktion.
SKal lige siges, at jeg har en class der hedder Phone der inderholde nogle simple funktioner, som denne klasse - KeyboardGUI - henviser til.
Har vedlagt koden nedenunder:
public class KeyboardGUI
{
private Phone phone;
private JFrame frame;
private JTextField display;
private JLabel status;
public KeyboardGUI()
{
phone = new Phone();
makeFrame();
}
private void makeFrame()
{
frame = new JFrame("Mobile Phone");
JPanel contentPane = (JPanel)frame.getContentPane();
contentPane.setLayout(new BorderLayout(6, 6));
contentPane.setBorder(new EmptyBorder(6, 6, 6, 6));
display = new JTextField();
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 3));
addButton(buttonPanel,"1");
addButton(buttonPanel,"2");
addButton(buttonPanel,"3");
addButton(buttonPanel,"4");
addButton(buttonPanel,"5");
addButton(buttonPanel,"6");
addButton(buttonPanel,"7");
addButton(buttonPanel,"8");
addButton(buttonPanel,"9");
addButton(buttonPanel,"Call");
addButton(buttonPanel,"0");
addButton(buttonPanel,"Clear");
status = new JLabel("Enter phone number");
makeMenuBar();
contentPane.add(display, BorderLayout.NORTH);
contentPane.add(buttonPanel, BorderLayout.CENTER);
contentPane.add(status, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
private void makeMenuBar()
{
final int SHORTCUT_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
JMenuBar menubar = new JMenuBar();
frame.setJMenuBar(menubar);
JMenu fileMenu = new JMenu("File");
menubar.add(fileMenu);
JMenuItem quitItem = new JMenuItem("Quit");
quitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));
quitItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileMenu.add(quitItem);
}
private void addButton(Container panel, String buttonText)
{
JButton button = new JButton(buttonText);
if( buttonText.equals( "Call" ) ){
button.addActionListener( new CallButtonListener() );
}
else if( buttonText.equals( "Clear" ) ){
button.addActionListener( new ClearButtonListener() );
}
else {
int number = Integer.parseInt( buttonText );
button.addActionListener( new NumberButtonListener( number ));
}
panel.add(button);
}
private void redisplay()
{
int displayValue = phone.getDisplayValue();
if( displayValue == 0 )
display.setText( "" );
else
display.setText("" + displayValue );
}
class NumberButtonListener implements ActionListener
{
private int number;
public NumberButtonListener( int number )
{
this.number = number;
}
public void actionPerformed( ActionEvent event )
{
phone.numberPressed(number);
redisplay();
status.setText( phone.getAction() );
}
}
class CallButtonListener implements ActionListener
{
public void actionPerformed( ActionEvent event )
{
phone.call();
redisplay();
status.setText( phone.getAction() );
}
}
class ClearButtonListener implements ActionListener
{
public void actionPerformed( ActionEvent event )
{
phone.clear();
redisplay();
status.setText( phone.getAction() );
}
}
}
