由于编译错误,我无法运行JFrame。警告

时间:2014-01-26 02:10:07

标签: java swing jar compiler-errors jframe

*对于我可能给你们带来的所有麻烦,我感到很遗憾。

所以,我只是在Java和Python方面有一点经验,对编程非常陌生。我试图创建一个可以打开框架的程序。在这个框架中会有一个按钮。单击时,此按钮将播放一首歌曲。我使用了来自YouTube的“推荐”代码。代码将开始运行,然后停止。甚至不会出现任何框架。我把它展示给了我的一位经验丰富的朋友。他说确切的代码在他的电脑上运行得很好。然后我给他发了我在eclipse上显示的项目的截图。他说我的JRE似乎丢失了一些文件。我尝试了一个只创建一个窗口的代码,但它有同样的问题。我不确定JRE是什么,但我目前有JRE7。我不知道该怎么做才能解决这个问题。请帮忙。

错误列表

Severity and Description    Path    Resource    Location    Creation Time   Id
The public type TopLevelWindow must be defined in its own file  TGProject/src   Frame.java  line 4  1390698271752   73
The type TopLevelWindow is already defined  TGProject/src   TopLevelWindow.java Unknown 1390699351785   77
The method show(boolean) from the type Component is deprecated  TGProject/src   sound.java  line 16 1390702839525   78

指向我日食的链接。 http://gyazo.com/3afdfa4f6750420f4e46deec40389340

指向我的Java文件的链接。 http://gyazo.com/257481d4ae9e2bb1d0ca93415a6c547e 音乐代码

import java.awt.event.*;
import javax.swing.*;
import sun.audio.*;
import java.io.*;

public class sound {

     public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(200,200);
JButton button = new JButton("Click me");
frame.add(button);
button.addActionListener(new AL());
//this is outdated, but should still work
frame.show(true);
}
public static class AL implements ActionListener{
 public final void actionPerformed(ActionEvent e) {
    music();
    }}

    public static void music()
    {
        AudioPlayer MGP = AudioPlayer.player;  
        AudioStream BGM;
        AudioData MD;
    ContinuousAudioDataStream loop = null; 

    try{
    BGM = new AudioStream(new FileInputStream("Jambi.mp3"));
    MD = BGM.getData();
    loop = new ContinuousAudioDataStream(MD);
    }catch(IOException error) {} 

MGP.start(loop);
}

}

框架代码

import java.awt.*; 
import javax.swing.*; 

// Create a simple GUI window
public class TopLevelWindow {

private static void createWindow() {

   //Create and set up the window. 
   JFrame frame = new JFrame("Simple GUI");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

   JLabel textLabel = new JLabel("I'm a label in the window",SwingConstants.CENTER); 
   textLabel.setPreferredSize(new Dimension(300, 100)); 
   frame.getContentPane().add(textLabel, BorderLayout.CENTER); 

   //Display the window. 
   frame.setLocationRelativeTo(null); 
   frame.pack();
   frame.setVisible(true); 
}

public static void main(String[] args) {

   createWindow();

}
} 

3 个答案:

答案 0 :(得分:1)

错误1

The public type TopLevelWindow must be defined in its own file

您需要更改。

public class TopLevelWindow {

要:

class TopLevelWindow {

或按照报告进行操作,并为TopLevelWindow

声明新课程

错误2

The type TopLevelWindow is already defined  

我不确定这意味着什么,但可以通过修复第一个问题来解决。

警告3

The method show(boolean) from the type Component is deprecated

对于任何弃用警告,请转到Java Docs中的相关方法。他们应该提供有关使用内容的详细信息。

提示

  • 经常编译并在您不明白错误时立即询问。
  • 不要尝试运行在该窗口中显示问题的代码。只有专家才能尝试。
  • 你用蜂蜜比用醋捕获更多的苍蝇。不要采取你对Jayan所做的语气,即使你认为他们是苛刻的。人们可以免费获得帮助,因此没有时间可以解决标准问题。向这个人解释这个问题现在已经改变可能更好。也许这对他们没有任何影响,但无论如何,添加这种回复都会阻止所有人的帮助。
  • “我使用了来自YouTube的”推荐“代码。” 不要使用YouTube视频来学习编程。他们通常都很老,在这种情况下,他们正在使用sun包中的类,因为 Java 1.3 ,所以有更好的替换类。

答案 1 :(得分:0)

如果您真的是编程新手,我建议使用IDE(开发环境),例如Netbeans或Eclipse,并创建一个新的JFrame表单。然后,您可以使用设计视图以图形方式设计界面,IE在屏幕上拖动您的按钮。无需绕过编程框架。代码所需的只是实现;单击按钮后会发生什么。

发布代码后,我又看了一眼,这就是我发现的: 这两个类都有主要方法。我跑了两个,每个都为我打开了一个不同的窗口。通常,您只需要一个主要方法。这是主要方法!这是你的计划的起点,你当然只有一个起点。此时,您的程序将根据您运行的主要方法执行两项不同的操作。

不过,这不是你的问题,因为两个主电源都在为我而奔跑。我想你必须有错误的java版本或什么?

答案 2 :(得分:0)

我认为你做的是将所有代码粘贴到一个未被称为“TopLevelWindow”的文件中。如果是这样,那就这样做。我认为你的问题会消失。

请记住,每个文件只有一个类,(除了内部类;不能作为初学者关注自己)。