首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Swing旋转和缩放

Java Swing旋转和缩放
EN

Stack Overflow用户
提问于 2020-11-12 14:44:41
回答 1查看 136关注 0票数 1

GUI图片

如果我点击按钮,图像旋转和大小下降。我想让重播按钮显示我以前点击过的动作。例如,我点击了缩放,放大,特定常规武器,CW,CW按钮,我点击了重播按钮,显示了我之前点击的所有动作。扩大规模,扩大规模,常规武器公约,化学武器,化学武器。我不知道怎么做

所有的按钮都是这样的

代码语言:javascript
复制
class ScaleUpButtonListener implements ActionListener{
    private MyDrawPanel myDrawPanel;
    public ScaleUpButtonListener(MyDrawPanel mymy) {
        myDrawPanel = mymy;
    }
    public void actionPerformed(ActionEvent e) {
        myDrawPanel.scaleJava(0.1);
    }
}

以及方法

代码语言:javascript
复制
public double angle = 0;
public double scale = 1.0;

public void rotateJava(double dangle) {
    angle += dangle;
    repaint();
}

public void scaleJava(double dsc) {
    scale += dsc;
    repaint();
}

我需要的方法是:

代码语言:javascript
复制
public void replayJava() {
    repaint();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-12 15:40:55

您需要为每个按钮使用一个ActionAction的部分功能是将自己添加到ArrayList中。然后,对于“重播”Action,您将遍历ArrayList直接调用操作。

代码语言:javascript
复制
class ScaleAction extends AbstractAction
{
    public ScaleAction()
    {
        putValue( Action.NAME, "Scale" );
    }

    public void actionPerformed(ActionEvent e)
    {
        // code for scaling
 
        if (e != null)
            replayList.add( this );
    }
}

那么“回放”操作的代码应该是这样的:

代码语言:javascript
复制
class ReplayAction extends AbstractAction
{
    public ReplayAction()
    {
        putValue( Action.NAME, "Replay" );
    }

    public void actionPerformed(ActionEvent e)
    {
        for (Action action: replayList)
            action.actionPerformed( null );
    }
}

有关更多信息,请阅读有关如何使用动作的Swing教程中的部分。

您的操作将定义为主类中的内部类,以便它们都可以访问"replayList“。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64806089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档