Как мне заставить этот класс диалога работать?
Я сделал урок будильника, и часть кода состоит в том, чтобы выбрать музыку, которая играет. Я создал кнопку, которая при нажатии открывает диалог выбора кнопок для музыки. Но у меня проблемы с супер в этом классе, проблема, которую мои другие окна не дали мне. Терпите меня, я очень плох в этом. Вот класс музыкального диалога (скажите, если вам нужны мои другие классы, чтобы ответить)
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");