java - 如何调用以 Graphics g 作为参数的方法?

标签 java swing methods graphics jpanel

所以我正在制作一个游戏,在有人获胜后,我想要一个运行方法来显示“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 对象适合在该组件上绘图。然后,您确保该组件的实例位于由应用程序的顶级窗口之一管理的组件之中。

或者,有时更改不同组件中的数据可能是合适的,例如JLabelJButton的文本,或 JTextArea 的内容。

还请考虑,为了显示某种风格的公告消息,弹出对话框可能适合。有多种方法可以构建和显示此类对话框,但 JOptionPane 提供了一些可能对您有用的快捷方式。

关于java - 如何调用以 Graphics g 作为参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33150082/

相关文章:

java - 在 IntelliJ 中找不到符号变量 DaggerAppComponent

java - 通过覆盖 DefaultTableCellRenderer 将图标添加到 JTable

python - 如何在Python中进行参数匹配、捕获

swift - 计算总距离 swift iOS

java - 将 Excel 中的行插入 mysql 会引发 JDBC 异常

java - 创建 JClouds SwiftApi 时出错 : Provider org. 无法实例化 jclouds.openstack.keystone.v2_0.KeystoneApiMetadata

java - 如何在 jtextarea java 中显示 <b> 和 <i>

java - 带有 JCombobox 编辑器的 JTable : handle mouse clicks

java - Java接口(interface)方法的正确实现方法

java - Android 将其打印到左侧?