所以我正在制作一个游戏,在有人获胜后,我想要一个运行方法来显示“x 赢了”或“y 赢了”。现在我的问题是,如果我创建方法来绘制包含胜利消息的字符串,那么我的 IDE 不允许我这样做,因为我显然无法运行以 Graphics g 作为参数的方法。
还有其他方法可以在 JFrame 屏幕上显示消息吗?
这是我的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;`
//nothing wrong here :P
public class Demonstration extends JFrame {
private JButton b1;
private JButton b2;
public Demonstration () {
//My constructor
JPanel panel = new JPanel();
panel.setLayout(null);
add(panel);
handler h = new handler();
b1 = new JButton("yes");
b2 = new JButton("no");
//A sub - class to handle events. Created below
b1.setBounds(34, 34, 34, 34);
//random
panel.add(b1);
b1.addActionListener(h);
b2.setBounds(56, 56, 56, 56);
// random again
panel.add(b2);
b2.addActionListener(h);
setTitle("Demonstration");
setBackground(Color.BLACK);
setDefaultCloseOperation(3);
setSize(720, 720);
setVisible(true);
}
}
那是我的小组。
public static void main (String[] args) {
new Demonstration();
}
因此,假设我稍后创建了处理程序类,我希望它运行一段代码,其中有一个 if/else 表示单击了哪个按钮 (.getSource()),并且我想使用 Graphics 重新设计界面并打印出胜利消息,我该怎么做?
最佳答案
当然,您可以运行将Graphics
作为参数的方法。任何 Swing 应用程序都会这样做。您也可以手动执行此操作,但在这种情况下,问题通常是如何获取正确的 Graphics
实例来绘制您想要绘制的位置。
有时您想要做的是扩展一些 JComponent
(通常是 JPanel
)并重写其 paintComponent(Graphics)
方法。该方法接收到的 Graphics
对象适合在该组件上绘图。然后,您确保该组件的实例位于由应用程序的顶级窗口之一管理的组件之中。
或者,有时更改不同组件中的数据可能是合适的,例如JLabel
或JButton
的文本,或 JTextArea
的内容。
还请考虑,为了显示某种风格的公告消息,弹出对话框可能适合。有多种方法可以构建和显示此类对话框,但 JOptionPane
提供了一些可能对您有用的快捷方式。
关于java - 如何调用以 Graphics g 作为参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33150082/