最近我试图制作一个简单的程序,需要在屏幕上多次移动一个按钮,但为了做到这一点,我必须能够从我似乎没有的代码的某些部分访问 JPanel能不能做,或者找个替代方法。这是一个小程序,可以查明我遇到的问题。
public class ButtonMover extends JFrame
{
public static void main(String[] args) {
new ButtonMover();
}
JButton actionButton;
public ButtonMover() {
JPanel buttonMoverPanel = new JPanel();
buttonMoverPanel.setLayout(new GridBagLayout());
this.add(buttonMoverPanel);
this.setSize(500,500);
this.setResizable(true);
this.setVisible(true);
JButton actionButton = new JButton("Testing Button");
buttonMoverPanel.add(actionButton);
ClickListener c = new ClickListener();
actionButton.addActionListener(c);
}
private class ClickListener
implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == actionButton)
buttonMoverPanel.add(new JLabel("Testing Label"));
//insert code to move button here
}
}
}
|buttonMoverPanel.add(new JLabel("Testing Label"));| line 是唯一不起作用的部分,因为我似乎无法从该区域引用 buttonMoverPanel。虽然它实际上不会导致任何错误,但它会阻止 actionButton 执行任何操作。