【问题标题】:How do I call a method which has Graphics g as its parameters?如何调用以 Graphics g 作为参数的方法?
【发布时间】:2015-10-15 13:36:37
【问题描述】:

所以我正在制作一个游戏,在有人获胜后,我想要一个运行显示“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 重新设计界面并打印出胜利信息,我该怎么做?

【问题讨论】:

    标签: java swing methods graphics jpanel


    【解决方案1】:

    当然,您可以运行将Graphics 作为参数的方法。任何 Swing 应用程序都这样做。您也可以手动完成,但在这种情况下,问题通常是如何获得正确的 Graphics 实例以在您想要绘制的位置进行绘制。

    有时你想做的是扩展一些JComponent(通常是JPanel)并覆盖它的paintComponent(Graphics)方法。该方法接收到的Graphics 对象适用于在该组件上绘图。然后确保该组件的一个实例位于由应用程序的一个顶级窗口管理的组件中。

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

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

    【讨论】:

      【解决方案2】:

      还有其他方法可以在 JFrame 屏幕上显示消息吗?

      不要尝试自定义绘画。

      我会使用JOptionPane

      阅读 Swing 教程中有关如何制作对话框的部分以获取更多信息。

      您将使用简单的JOptionPane.showMessageDialog(...) 方法。

      【讨论】:

        猜你喜欢
        • 2022-01-02
        • 2019-06-05
        • 2023-04-10
        • 1970-01-01
        • 2013-11-18
        • 2019-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多