Java 我无法看到框架内的组件
嗨,我正在编写一个报警应用程序。 我有一个小睡课,当闹钟响的时候会被叫醒。在使用JMF之前,它工作得很好,但是在使用JMF之后,我只看到我的snooze UI的外部框架 我试着在课堂上开始一个新的主题,但得到了同样的结果。我在这里粘贴我认为问题所在的类的代码 请帮我解决这个问题 *现在上课。检查是否是发出警报的时间* *播放歌曲的媒体课程* *真正的问题在哪里*Java 我无法看到框架内的组件,java,multithreading,swing,user-interface,Java,Multithreading,Swing,User Interface,嗨,我正在编写一个报警应用程序。 我有一个小睡课,当闹钟响的时候会被叫醒。在使用JMF之前,它工作得很好,但是在使用JMF之后,我只看到我的snooze UI的外部框架 我试着在课堂上开始一个新的主题,但得到了同样的结果。我在这里粘贴我认为问题所在的类的代码 请帮我解决这个问题 *现在上课。检查是否是发出警报的时间* *播放歌曲的媒体课程* *真正的问题在哪里* 包装报警; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener
包装报警;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JComboBox;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
公共类Snooze扩展线程实现ActionListener{
JFrame sozef=新JFrame(“打盹”);
JLabel tl=新JLabel(“之后”);
JLabel ml=新JLabel(“分钟”);
JComboBox tiec=新的JComboBox();
JButton soo=新JButton(“打盹”);
JButton stp=新JButton(“停止”);
mp3 mi=新的mp3();
斯诺兹;
public void run(){
sozef.setSize(500700);
sozef.setLayout(空);
tl.setBounds(50,50,50,50);
tiec.立根(50,90,50,30);
ml.setBounds(120,90,50,50);
soo.setBounds(50130,90,30);
stp.立根(50、170、90、30);
JcAdd(tiec);
添加(tl);
sozef.add(tiec);
添加硫酸锌(ml);
sozef.add(soo);
sozef.add(stp);
soo.addActionListener(这个);
sozef.setVisible(true);
sozef.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void JcAdd(JComboBox jc){
对于(int i=0;i这不是实现延迟的正确方法:
while(!(Calendar.getInstance().after(ch))){
}
事实上,这将导致严重的问题
尝试计算目标日期和当前时间之间的毫秒数,并将该值传递给线程。sleep
。计算机的case fans会感谢您。很可能是因为您的忙循环正在耗尽AWT事件线程,从而阻止帧显示。setLayout(null)
我不需要看到更多的东西来实现这个应用程序。有严重的问题。使用带有填充和边框的布局,可以获得性能更好的GUI。要更快地获得更好的帮助,请发布一篇文章。但是安德鲁·汤普森先生,这个GUI是独立工作的,它是媒体代码的组合。我认为它遇到了问题。谢谢你的建议。我也理解它我会试试这个线程,然后把发生的事情发出去
package alarm;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.media.*;
import java.io.*;
import java.net.URL;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
class mp3 extends Thread
{
private URL url;
private MediaLocator mediaLocator;
private Player playMP3;
static String mp3;
static String mp4;
public mp3()
{
try{
System.out.println(System.getProperty("os.name"));
System.out.println("before"+mp3);
if(System.getProperty("os.name").equals("Linux")){
mp4="file://".concat(mp3);
}
else{
mp4="file:///".concat(mp3);
}
System.out.println(mp4);
this.url = new URL(mp4);
}catch(java.net.MalformedURLException e)
{System.out.println(e.getMessage());}
}
public void run()
{
try{
System.out.println(url);
mediaLocator = new MediaLocator(url);
playMP3 = Manager.createPlayer(mediaLocator);
}catch(java.io.IOException e)
{System.out.println(e.getMessage());
}catch(javax.media.NoPlayerException e)
{System.out.println(e.getMessage());}
playMP3.addControllerListener(new ControllerListener()
{
public void controllerUpdate(ControllerEvent e)
{
if (e instanceof EndOfMediaEvent)
{
playMP3.stop();
playMP3.close();
}
}
}
);
playMP3.realize();
playMP3.start();
}
}
package alarm;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Snooze extends Thread implements ActionListener{
JFrame sozef=new JFrame("Snooze");
JLabel tl=new JLabel("After");
JLabel ml=new JLabel("mins");
JComboBox tiec=new JComboBox();
JButton soo=new JButton("Snooze");
JButton stp=new JButton("Stop");
mp3 mi=new mp3();
Snooze sz;
public void run(){
sozef.setSize(500,700);
sozef.setLayout(null);
tl.setBounds(50,50,50,50);
tiec.setBounds(50,90,50,30);
ml.setBounds(120,90,50,50);
soo.setBounds(50,130,90,30);
stp.setBounds(50, 170, 90, 30);
JcAdd(tiec);
sozef.add(tl);
sozef.add(tiec);
sozef.add(ml);
sozef.add(soo);
sozef.add(stp);
soo.addActionListener(this);
sozef.setVisible(true);
sozef.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void JcAdd(JComboBox jc){
for(int i=0;i<=10;i++)
jc.addItem(Integer.toString(i));
}
public void actionPerformed(ActionEvent arg0) {
if(arg0.getSource()==soo){
int ma=Integer.parseInt(tiec.getSelectedItem().toString());
mi.stop();
IsTime sz=new IsTime();
sz.makeReady(ma);
}
mi.stop();
}
} ![this is the frame I see when the snooze is being called][1]
while(!(Calendar.getInstance().after(ch))){
}