2013-07-19 5 views
0

У меня есть опыт работы с картиной на Java. В основном я знаю, как добавить ключевых слушателей в кадр, но я хотел бы знать, есть ли другой способ добавления всех этих методов, чем просто писать их после или до основного метода. Такой подход делает мой код плохо читаемым.Более эффективная реализация KeyListener

public class test extends JPanel { 
    public static JFrame frame; 
    public static JPanel panel; 
    public static int x; 
    public static int y; 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g);  
     g.fillOval(x,y,20,20); 
    } 

    public static void main(String args[]) { 
     test x=new test(); 

     x.setBackground(Color.white); 

     frame=new JFrame(); 
     frame.setSize(500,500); 
     frame.add(x); 
     frame.setVisible(true); 
    } 
} 
+1

Почему вы не прочитали учебник «Custom Painting», как было предложено в последнем посте: http://stackoverflow.com/questions/17753492/adding-oval-shape-to-jpanel. Это не способ структурирования класса. Вы не должны использовать статические переменные. Вы не реализовали метод getPreferredSize(). 'frame' и' panel' не являются переменными, которые должны быть определены в вашем классе. 'text' не является надлежащим именем класса. Зачем задавать вопросы, когда вы не слушаете совет ??? Наконец НЕ используйте KeyListener. Для достижения вашей цели лучше использовать API. – camickr

ответ

5

Да, адаптеры уменьшает много кода:

frame.addKeyListener(new KeyAdapter(){ 
@Override 
public void keyTyped(KeyEvent e){ 
// do what ever you want 
} 
}); 

В приведенном выше примере вы можете также переопределить keyPressed и keyReleased методы, но это будет справедливо только для кадра. Если у вас есть время, взгляните на KeyBindings.

+1

+1 для, но Container верхнего уровня по умолчанию никогда не взаимодействует с KeyEvents из KeyListener – mKorbel

Смежные вопросы