gpt4 book ai didi

java - 尝试使用 actionListener 将字符串颠倒过来

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:11 25 4
gpt4 key购买 nike

来 self 的教科书:“编写一个扩展 JFrame 的应用程序,并在用户单击按钮时颠倒显示短语。当用户再次单击按钮时,该短语会正常显示。”

目前我有一个使用 Paint() 方法和一个 Graphic 对象绘制的字符串。该字符串在 JUpsideDown 框架中可见,它是上下颠倒的,位于面板的中间位置。我添加了按钮和 actionListener,但我认为 actionPerformed 方法中的代码是错误的,因为我试图通过乘以 -1 使负字体大小变为正字体大小,但当我重新绘制时它似乎没有生效。定位的字符串移动到 x = 100 和 y = 100,但字符串仍然颠倒。

欢迎任何形式的指导。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class JUpsideDown extends JFrame implements ActionListener
{
int x = 350;
int y = 100;
int fontSize = -26;
Font font = new Font("Serif", Font.PLAIN, fontSize);
JButton press = new JButton("Flip Text");
String label = "Look at this text, it will flip!";

public JUpsideDown()
{
setTitle("JUpsideDown");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(press);
press.addActionListener(this);
}

public void paint(Graphics g)
{
super.paint(g);
g.setFont(font);
g.drawString(label, x, y);
}

public void actionPerformed(ActionEvent e)
{
fontSize = fontSize * -1;
x = 100;
y = 100;
repaint();
}

public static void main(String[] args)
{
JUpsideDown frame = new JUpsideDown();
frame.setSize(450, 200);
frame.setVisible(true);

}

}

最佳答案

你的逻辑是正确的,尽管你需要再次实例化一个新的Font对象来封装新的fontsize。这应该在 actionPerformed() 方法中单击按钮后执行。通过这种方式,应用程序的行为将是预期的。

您可以在下面找到可能的解决方案:

public void actionPerformed(ActionEvent e)
{
fontSize = fontSize * -1;
x = 100;
y = 100;
font = new Font("Serif", Font.PLAIN, fontSize); //added line
repaint();
}

关于java - 尝试使用 actionListener 将字符串颠倒过来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47382928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com