Как мне заставить этот класс диалога работать?

Я сделал урок будильника, и часть кода состоит в том, чтобы выбрать музыку, которая играет. Я создал кнопку, которая при нажатии открывает диалог выбора кнопок для музыки. Но у меня проблемы с супер в этом классе, проблема, которую мои другие окна не дали мне. Терпите меня, я очень плох в этом. Вот класс музыкального диалога (скажите, если вам нужны мои другие классы, чтобы ответить)

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)

1 ответ

Решение

В вашем конструкторе вы пытаетесь вызвать super со строковым параметром. Так как вы наследуете от Dialog учебный класс. Как вы можете видеть из связанных Javadocs, Dialog не имеет конструктора, который принимает только строку - сначала нужно передать другие параметры (либо другой Dialog, Frame, Window, или же null).

В качестве временного решения проблемы вы можете позвонить super использование нулевого значения в качестве первого параметра - это означает, что создаваемый диалог не имеет родительского окна.

super((Dialog)null, "Set Music");
Другие вопросы по тегам