public OnScreenKeyboard(Class<? extends JButton> c) {
//		setOpaque(true); // content panes must be opaque
		buttonCreator = null;

		try {
			final Constructor<? extends JButton> constructor = c.getConstructor();
			buttonCreator = new ButtonCreator() {
				@Override
				public JButton create() {
					try {
						return constructor.newInstance();
					} catch (IllegalArgumentException e) {
						e.printStackTrace();
					} catch (InstantiationException e) {
						e.printStackTrace();
					} catch (IllegalAccessException e) {
						e.printStackTrace();
					} catch (InvocationTargetException e) {
						e.printStackTrace();
					}
					return null;
				}
			};
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		}
		try {
			robot = new Robot();
		} catch (AWTException e) {
			e.printStackTrace();
		}

		setFocusable(false);
		setOpaque(true);
		setBackground(Color.DARK_GRAY);
//	    setBackground(new Color(0f, 0f, 0f, 0.1f));
	}