我从this链接找到了一个java代码。
当我尝试运行它时,错误类没有主要方法。我知道这是一个类似的帖子,但我尝试搜索/尝试不同的解决方案,但当我尝试它们时,他们不工作。以下是代码
package trafficlight;
import javax.swing.*;
import java.awt.*;
public final class TrafficLight extends JPanel implements Runnable{
int redDuration, // Time (in seconds) for duration of red light
yellowDuration, // Time (in seconds) for duration of yellow light
greenDuration; // Time (in seconds) for duration of green light
PedestrianLight PL; // Associated coordinated pedestrian light
Color onLight; // To indicate which color light is on
int TLWidth = 0; // Width of traffic light
int TLHeight; // Height of traffic light
int xOrigin; // Coordinates of upper left-hand corner of
int yOrigin; // traffic light
int xLCoor; // x coordinate of lights
int yLCoor; // y coor of red light
int LDiam; // Diameter of each light
int interLSpace; // Space between lights
/*************************************
* Constructors
*************************************/
TrafficLight( PedestrianLight PL ) // One-parameter constructor
{
this.PL = PL;
onLight = Color.green;
redDuration = 15000; // Set red duration to 15 secs
yellowDuration = 5000; // Set yellow duration to 5 seconds
greenDuration = 15000; // Set green duration to 15 secs
}
TrafficLight( PedestrianLight PL,Color c ) // Two-parameter constructor
{
this.PL = PL;
setOnLight( c ); // Verify color setting
redDuration = 15000; // Set red duration to 15 secs
yellowDuration = 5000; // Set yellow duration to 5 seconds
greenDuration = 15000; // Set green duration to 15 secs
}
TrafficLight( PedestrianLight PL,int redDur,int yellowDur,int greenDur ){
this.PL = PL;
onLight = Color.green;
redDuration = 1000*redDur; // Duration params given in secs
yellowDuration = 1000*yellowDur; // Convert to milliseconds
greenDuration = 1000*greenDur;
}
/**************************************
* Setters and getters
* @return
**************************************/
public Color getOnLight()
{
return onLight;
}
public void setOnLight( Color c )
{
// Setters and constructors should insure that class variables
// are set to valid values.
if ( c == Color.red || c == Color.yellow || c == Color.green )
{
onLight = c;
}
else
{
System.out.println("TrafficLight.setOnLight: cannot set " +
"traffic light to color " + c +
"\nSetting color to default green.");
onLight = Color.green;
}
}
public void setColor( Color c ){
setOnLight( c );
repaint();
}
/************************************************
* Paint
************************************************/
@Override
public void paintComponent(Graphics g)
{
super.paintComponent( g ); // For background
System.out.println("Painting traffic light again");
if ( TLWidth == 0 ){
Dimension d = getSize(); // Get size of panel
System.out.println("d = " + d);
TLWidth = d.width/2; // Set width of traffic light
TLHeight = 3*d.height/4; // Set height of traffic light
xOrigin = (d.width - TLWidth)/2; // Center traffic light on panel
yOrigin = (d.height - TLHeight)/2;
LDiam = TLHeight/6; // Diameter of each light
xLCoor = xOrigin + (TLWidth - LDiam)/2; // x coordinate of lights
interLSpace = (TLHeight - 3*LDiam)/4; // Space between lights
yLCoor = yOrigin + interLSpace; // y coor of red light
}
Color colorSave = g.getColor(); // Save current color
//Draw outline of traffic light
g.setColor( Color.lightGray );
g.fill3DRect(xOrigin,yOrigin,TLWidth,TLHeight,true);
Color Red, Yellow, Green; // Colors to change light to
// Change the light
if ( onLight == Color.red ){
Red = turnOn( Color.red );
Yellow = turnOff( Color.yellow );
Green = turnOff( Color.green );
}
else if ( onLight == Color.yellow ){
Red = turnOff( Color.red );
Yellow = turnOn( Color.yellow );
Green = turnOff( Color.green );
}
else{
Red = turnOff( Color.red );
Yellow = turnOff( Color.yellow );
Green = turnOn( Color.green );
}
// Now color the lights. onLight is bright others are darkened.
g.setColor( Red );
g.fillOval(xLCoor,yLCoor,LDiam,LDiam);
g.setColor( Yellow );
g.fillOval(xLCoor,yLCoor+LDiam+interLSpace,LDiam,LDiam);
g.setColor( Green );
g.fillOval(xLCoor,yLCoor+2*LDiam+2*interLSpace,LDiam,LDiam);
// Now draw black outline around each light
g.setColor(Color.black);
// Red light
g.drawOval(xLCoor,yLCoor,LDiam,LDiam);
// Yellow light
g.drawOval(xLCoor,yLCoor+LDiam+interLSpace,LDiam,LDiam);
// Green light
g.drawOval(xLCoor,yLCoor+2*LDiam+2*interLSpace,LDiam,LDiam);
g.setColor(colorSave); // Restore original color
}
/************************************************
* Auxillary methods used by paintComponent
************************************************/
Color turnOn( Color c )
{ return c.brighter().brighter(); }
Color turnOff( Color c )
{ return c.darker().darker(); }
/************************************************
* run method as required by Runnable interface
************************************************/
@Override
public void run(){
System.out.println("Entering TrafficLight.run()");
long startTime;
PL.setMessage( "Don't Walk" );
while ( true )
{
setColor( Color.red ); // Change traffic light to red
try{
System.out.println( "TL.run() sleep for " + redDuration +
"milliseconds." );
Thread.sleep( redDuration );
}
catch ( InterruptedException e ) {}
startTime = System.currentTimeMillis();
setColor( Color.green ); // Change traffic light to green
PL.setMessage( "Walk" ); // Change ped light to "Walk"
try{ // Sleep for 2/3 green dur minus time
startTime += 2*greenDuration/3; // to change lights
Thread.sleep( Math.max( 0,startTime-System.currentTimeMillis() ) );
}
catch ( InterruptedException e ) {}
//PL.setMessage( "Don't Walk" ); // change ped light to "Don't Walk"
//PL.setFlashing( true ); // & start ped light flashing.
startTime = System.currentTimeMillis();
PL.setMessage( "Don't Walk",true ); //Atomize above two calls
try{
startTime += greenDuration/3; // Sleep 1/3 green duration
Thread.sleep( Math.max( 0,startTime-System.currentTimeMillis() ) );
}
catch ( InterruptedException e ) {}
startTime = System.currentTimeMillis();
PL.setFlashing( false ); // Chg ped light from flash to solid
setColor( Color.yellow ); // Change traffic light to yellow
try{
startTime += yellowDuration;
Thread.sleep( Math.max( 0,startTime-System.currentTimeMillis() ) );
}
catch ( InterruptedException e ) {}
}
}
private static class PedestrianLight {
public PedestrianLight() {
}
private void setFlashing(boolean b) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private void setMessage(String dont_Walk, boolean b) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private void setMessage(String walk) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
答案 0 :(得分:1)
您的问题有答案,您在代码/类中没有主要方法,而您正尝试执行该方法。
正如您在评论中提到的,您不熟悉使用Eclipse,Netbeans或IntelliJ IDEA等IDE,它们会为您提供正确的警告和提示。
答案 1 :(得分:0)
我认为您找到的代码源于此:
如果查看链接文件,开头会有一个块注释:
/**
* The <code>class TrafficLight</code> defines a panel on which the
* <code>paintComponent( Graphics )</code> method draws a traffic light.
* This code uses JDK 1.2.
* This version of the class also implements Runnable with a run method
* that animates the traffic light and sends signals to a coordinated
* pedestrian light (whose name must be provided to the Traffic light
* constructor) to change and flash the pedestrian light at the appropriate
* times. This is done by synchronized getters and setters in the
* associated pedestrian light class.
*
* To use (or install) such a light, it is only necessary in the applet
* to declare the associated pedestrian light, declare the traffic light
* and pass it the name of the associated pedestrian light and the desired
* time durations for each of the red (default 15 secs), yellow
* (default 5 secs), and green (default 15 secs) lights. The pedestrian
* light will be a solid "Don't Walk" during the red and yellow lights.
* On the green light, the pedestrian light will display a solid "Walk"
* for the first 2/3 of the green duration and the last 1/3 of the
* green duration, the "Walk" will flash. All of the animation is
* provided by the run methods in the traffic light and pedestrian light
* classes.
*/
编写一个执行该操作的Applet,您可以运行代码。
答案 2 :(得分:0)
您发布的课程<input v-model="id"> <!-- Filter to the id inputted here -->
是TrafficLight.java
的一部分。所以它不能单独运行。
Applet本身通常嵌入到网页中并在浏览器中运行。在Oracles Applet tutorial上查看有关小程序的更多信息。
要在applet中运行,您可以从here
下载以下文件您可以将applet运行为:
Applet
要在没有appletviewer的情况下从命令行运行applet代码,你需要一个可以执行applet的图形容器。
示例代码段看起来像
appletviewer TLApplet.html
要运行它,您必须执行(假设文件import javax.swing.JFrame;
import javax.swing.JApplet;
class TLAppletFrame {
public static void main(String[] args) {
JApplet applet = new TLApplet();
applet.init();
JFrame frame = new JFrame("Applet in Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( applet );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
applet.start();
}
}
与下载的文件位于同一目录中)
TLAppletFrame.java