我的问题是,如何使用我的动作监听器清除图形,并通过再次运行OtherPanel来创建一组新的图形?
public class MainFrame extends JFrame
{
private OtherPanel panel;
public MainFrame()
{
panel = new OtherPanel();
}
class OtherPanel extends JPanel
{
private OtherPanel()
{
...
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
....
}
private class ReloadListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
}
class OtherPanel extends JPanel
{
private boolean isReset;
private OtherPanel()
{
...
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(!isReset){
//your painting code here
}
}
public void setReset(boolean reset){
isReset = reset;
}
private class ReloadListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
setReset(true);
repaint();
}
}
}
这一切都取决于"重置"面板的外观。我只保留了默认的super.paintComponent()
,您可能需要更改它。当你想在面板上绘制一些东西时,不要忘记在代码的某个地方添加setReset(false)
。
private class ReloadListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
newPic();
panel.updateUI();
}
public MainFrame newPic()
{
return new MainFrame();
}
}