我不确定为什么,但是当我尝试运行时,唯一显示的是我运行的最后一个程序,我甚至添加了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;
}
}
}
}
答案 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