【问题标题】:How do I get this dialog class to work?如何让这个对话框类工作?
【发布时间】:2016-01-20 20:47:05
【问题描述】:

我创建了一个闹钟类,部分代码是挑选播放的音乐。我创建了一个按钮,单击该按钮会打开一个对话框来选择音乐按钮。但是,我在这门课上遇到了超级问题,这是我的其他窗口没有给我的问题。忍受我,我在这一切都很糟糕。 这是音乐对话课(如果需要我的其他课来回答,请告诉我)

import java.awt.*;
import java.io.*;
public class SetMusicDialog extends Dialog
{
    public static String sng;
    public SetMusicDialog()
    {
        super ( "Set Music");
        Panel mpanel;
        Font l = new Font("Helvetica", Font.ITALIC, 12);
        setFont(l);//sets font
        setBackground(Color.cyan);

        Panel f = new Panel();
        f.add("West", new Button("Death Grips"));
        f.add("East", new Button("Siren"));
        add("South",f);
        pack();                           // make it just fit
        resize(preferredSize());
        move(200,200);
    }

    public boolean handleEvent1 (Event evt)
    {
        switch (evt.id)
        {
            case Event.ACTION_EVENT:
                if("Death Grips".equals(evt.arg))
                {
                    sng= "breakmirrors.wav";
                }
                else if("Siren".equals(evt.arg))
                {
                    sng= "bip.wav";
                }
        }
    }
}

这是我不断收到的错误:

Error: no suitable constructor found for Dialog(java.lang.String)
constructor java.awt.Dialog.Dialog(java.awt.Frame) is not applicable
  (argument mismatch; java.lang.String cannot be converted to java.awt.Frame)
constructor java.awt.Dialog.Dialog(java.awt.Dialog) is not applicable
  (argument mismatch; java.lang.String cannot be converted to java.awt.Dialog)
constructor java.awt.Dialog.Dialog(java.awt.Window) is not applicable
  (argument mismatch; java.lang.String cannot be converted to java.awt.Window)

【问题讨论】:

  • 一开始你写了 super("Set Music" ) 但是你的父类没有这样的构造函数......我建议你检查这个 [link] (stackoverflow.com/questions/508723/…)跨度>
  • 嗨,对不起。把标题搞砸了现在已编辑。

标签: java dialog awt super


【解决方案1】:

在您的构造函数中,您尝试使用字符串参数调用super。由于您继承自 Dialog 类。正如您从链接的 javadocs 中看到的那样,Dialog 没有只接受字符串的构造函数 - 您必须先传递其他参数(另一个 DialogFrameWindownull) .

作为一种临时解决方法,您可以使用 null 作为第一个参数来调用 super - 这意味着您正在创建的 Dialog 没有父窗口。

super((Dialog)null, "Set Music");

【讨论】:

  • 说到这个我太厚了,对不起。我怎么做?抱歉打扰了,我只需要为我说明这些事情。我已经看过那个页面了,我只是不明白我需要在那里放什么。
  • 现在它给了我这个错误: File: C:\Users\16tacheronc\SetMusicDialog.java [line: 10] 错误:对 Dialog 的引用是不明确的两个构造函数 Dialog(java.awt.Frame,java java.awt.Dialog 中的 .lang.String) 和 java.awt.Dialog 中的构造函数 Dialog(java.awt.Dialog,java.lang.String) 匹配
  • 啊,那是因为编译器不知道 null 代表什么类型。到最后都无所谓,所以只要将其转换为这三个类之一(例如,super((Dialog)null, "Set Music");
  • 非常感谢!现在它给了我另一个错误,但这与此无关。谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-06-21
  • 2020-08-16
  • 2015-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多