Eclipse程序JPanel不会运行

时间:2016-05-27 06:28:53

标签: java eclipse swing runtime-error

我不确定为什么,但是当我尝试运行时,唯一显示的是我运行的最后一个程序,我甚至添加了serialVersionUID,它仍然无法显示。任何人都有我为什么,或许在我的日食或计算机上有一些设置问题?

import java.awt.Graphics;
import javax.swing.JPanel;

public class Shapes extends JPanel {
    private static final long serialVersionUID = 1L;
    private int choice;

    public Shapes(int userChoice) {
        choice = userChoice;
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        for (int i = 0; 1 < 10; i++) {
            switch (choice) {
            case 1:
                g.drawRect(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);
            case 2:
                g.drawOval(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);
                break;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

首先,你的程序没有入口点。您不能只期望Java中的程序,或基本上任何其他编译语言在没有入口点的情况下运行。

在课堂上,您需要具备以下内容才能开始该课程:

<html>    
    <head>
        <script>var devmode = true</script>
        <script>var loadExec=false</script>
        <script src="/files/js/jquery.min.js"></script>
    </head>
    <body id="body" class="selectable nooverflow">
        <div class="container hidden desktop">
            <div class="window selectable"  data-pos=!!DATA!!>
                <div class="titlebar">
                    <span class="titletext" onmousedown="movingW=true" onmouseup="movingW=false">Window 1</span>
                </div>
            </div>
            <div class="window" data-pos=!!DATA!!> 
                <div class="titlebar">
                    <span class="titletext" onmousedown="movingW=true" onmouseup="movingW=false">Window 2</span>
                </div>
            </div>
        </div>
        <link rel="stylesheet" type="text/css" href="/files/css/style.css">
        <script src="/files/js/core.js"></script>       <!-- irrelevant -->
        <script src="/files/js/subcore.js"></script>    <!-- irrelevant -->
        <script>        
            $(function () {
                $(window).on("load", function () {
                    $('.window').each(function (index) {
                        if (!loadExec) {
                            var data = $(this).data('pos');
                            //alert(data + "\nDatatype: " + (typeof data));
                            if (data) {
                                alert(data);

                                //PARSING HERE!! <----------

                                $(this).css({ 'top': data.y, 'left': data.x, position: 'absolute' });
                            }

                            loadExec = true;
                            $('.container').removeClass('hidden');
                        }
                    });
                });
            });
        </script>
    </body>
</html>

其次,扩展任何public static void main(String[] args) { // Entry-point began. Put code in here. } 衍生物并不是一个好的做法(如果我错了,请纠正我)。如果不再解释,可以找到一个很好的理由here

<强>摘录:

  
      
  • 这使得以后更改事情变得更加困难 - 如果你已经公开了一个类,那么交换超类就会破坏子类 - 这是一个选择,一旦你公开了代码,你就会嫁给它。因此,如果您没有改变超类的真实功能,那么如果您使用,您可以更自由地更改内容,而不是扩展您需要的内容。举例来说,继承JPanel - 这通常是错误的;如果子类在某个地方公开,你永远不会有机会重新审视这个决定。如果它作为JComponent getThePanel()访问,您仍然可以这样做(提示:在API中公开组件的模型)。 这尤其适用,因为您的课程是JComponent。因此,当Shape扩展JPanel时,每个形状都会。
  •   
  • 对象层次结构不能扩展(或者使它们在后面扩展比规划更难) - 这是典型的“太多层”问题。我将在下面讨论,以及AskTheOracle模式如何解决它(虽然它可能冒犯OOP纯粹主义者)。
  •   

特别是因为您正在扩展Shape,甚至没有开始初始化JPanel。在开始使用Java中的Swing应用程序之前,您应该事先阅读JavaDoc和Oracles示例...

JavaDoc:JFrame / JPanel
示例:How to make Frames.

因此,修改我所说的, 基本 Swing类如下所示:

JFrame