Я хочу, чтобы KeyEvent менял цвет фона моих JPanels. Ничего не происходит, когда я нажимаю что-либо на клавиатуре. Одна из моих спецификаций приложений заключается в том, что мне нужен «Индивидуальный компонент, расширенный от JPanel». поэтому у меня есть еще один класс для моей графической панели.KeyEvent не изменит цвет фона JPanels
Моя проблема когда G нажимается ничего не происходит, но моя центральная панель должна зеленеть ...
Вот код для части моего приложения.
public class Maths extends JFrame implements KeyListener
{
private JPanel pNorth = new JPanel();
private JPanel pSouth = new JPanel();
private JPanel pCenter = new JPanel();
private JPanel pEast = new JPanel();
private JPanel pWest = new JPanel();
private File file;
private JPanel pDraw = new GraphicsPanel();
public static void main(String args[])
{
new Maths();
}
public Maths()
{
mainFrame = new JFrame();
mainFrame.setTitle("Maths Test Game");
mainFrame.setLayout(new BorderLayout());
mainFrame.setSize(1200, 800);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.add(pNorth, BorderLayout.NORTH);
mainFrame.add(pSouth, BorderLayout.SOUTH);
mainFrame.add(pCenter, BorderLayout.CENTER);
mainFrame.add(pEast, BorderLayout.EAST);
mainFrame.add(pWest, BorderLayout.WEST);
pNorth.setLayout(new FlowLayout());
pSouth.setLayout(new FlowLayout());
pCenter.setLayout(new FlowLayout());
pEast.setLayout(new FlowLayout());
pWest.setLayout(new FlowLayout());
addKeyListener(this);
setFocusable(true);
mainFrame.setVisible(true);
}
class GraphicsPanel extends JPanel
{
GraphicsPanel()
{
// set a preferred size for the custom panel.
setPreferredSize(new Dimension(250, 300));
}
@Override
public void paint(Graphics g)
{
super.paint(g);
// set blue color for drawing
g.setColor(Color.blue);
// face
g.drawOval(90, 70, 80, 80);
// eyes
g.drawOval(110, 95, 5, 5);
g.drawOval(145, 95, 5, 5);
// nose
g.drawLine(130, 95, 130, 115);
// mouth
g.drawArc(113, 115, 35, 20, 0, -180);
}
}
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_G)
{
pCenter.setBackground(Color.green);
}
repaint();
}
@Override
public void keyReleased(KeyEvent e)
{
}
@Override
public void keyTyped(KeyEvent e)
{
}
}
Я заметил, что у вас есть лишний код, включенный в ваш вопрос. Не могли бы вы создать [MCVE] (http://stackoverflow.com/help/mcve), демонстрирующие конкретную проблему? – Vulcan
[Как использовать привязки клавиш] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer
Какой код не нужен? Я добавил графический класс, потому что думал, что это может быть проблемой. что, возможно, мне нужны мои ключевые исполнители в этом классе. – Fin