我一直遇到这个非常烦人的问题,无法找到为什么发生这种情况的解释,但是在搜索了45分钟之后,Stackoverflow是我的最后选择。下面的代码是发生了什么。
//inside of initComponents();
//jPanel1 is a JPanel
jPanel1 = new Panel(); // Panel extends JPanel
addKeyListener(jPanel1.new InputListener()); // InputListener implements keyListener
// ^^^ "cannot find symbol 'InputListener' "
老实说,我对正在发生的事情一无所知,但是如果有人可以帮助我,那真是太棒了。
窗口类:
public class MainWindow extends javax.swing.JFrame {
/**
* Creates new form MainWindow
*/
public MainWindow() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new Panel();
addKeyListener(jPanel1.new InputListener());
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 725, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 601, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
jPanel1.getAccessibleContext().setAccessibleDescription("");
pack();
}// </editor-fold>
// Variables declaration - do not modify
javax.swing.JPanel jPanel1;
// End of variables declaration
}
面板类:
public class Panel extends JPanel{
Timer t;
Guy guy;
public Panel(){
guy = new Guy(400, 300);
t = new Timer(20, new UpdateListener());
t.start();
}
class InputListener implements KeyListener {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
guy.vx = 100;
guy.vy = 100;
}
@Override
public void keyReleased(KeyEvent e) {
guy.vx = 0;
guy.vy = 0;
}
}
class UpdateListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
guy.update(.02);
repaint();
}
}
@Override
public void paint(Graphics g){
super.paint(g);
guy.draw(g);
}
}