import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; public class TestReakce extends JFrame { private class StartAction extends AbstractAction { @Override public void actionPerformed(ActionEvent arg0) { afterPressStart(); } } private class ClickListener implements MouseListener { @Override public void mouseClicked(MouseEvent arg0) { afterClick(); } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } } private StartAction startAction; protected StartAction getStartAction() { if (startAction == null) startAction = new StartAction(); return startAction; } private JPanel testField; private JButton startButton; protected JButton getStartButton() { if (startButton == null) startButton = new JButton(getStartAction()); return startButton; } protected JPanel getTestField() { if (testField == null) { testField = new JPanel(); testField.addMouseListener(new ClickListener()); } return testField; } public void afterPressStart() { } public void afterClick() { } public TestReakce() { super(); getContentPane().setLayout(new BorderLayout()); getContentPane().add(getStartButton(), BorderLayout.SOUTH); getContentPane().add(getTestField(), BorderLayout.CENTER); } public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); TestReakce app = new TestReakce(); app.setVisible(true); } catch (Throwable exception) { System.err.println("Exception occurred in main()"); exception.printStackTrace(System.out); } } }