2016-07-26 64 views
1

Ich kann dieses Applet ausführen, aber es zeigt keine der JApplet Komponenten, das Applet zeigt nicht die Beschriftungen oder Textfelder, und hoffentlich meine if/sonst Zustand ist richtig.Ein Problem mit diesem JApplet, unsicher, warum es nicht funktioniert

package JavaPractice; 

/* Dominic Spucches 
Exercise 7-2 
This program will compare 2 applets 
*/ 

import java.awt.*; 
import java.awt.event.AWTEventListener; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public abstract class ex7_2 extends JApplet implements ActionListener { 

    private static final long serialVersionUID = 1L; 
     JLabel st1 = new JLabel("Enter a string: "); 
     JTextField str1 = new JTextField(); 
     JLabel st2 = new JLabel("Enter a string: "); 
     JTextField str2 = new JTextField(); 
     JLabel same1 = new JLabel(); 
     JLabel same2 = new JLabel(); 
     JLabel results = new JLabel(); 
     FlowLayout flow = new FlowLayout(); 
     Container c; 


    public void init() 
    { 

     c = getContentPane(); 
     c.setLayout(flow); 
     c.setBackground(Color.gray); 
     st1.setForeground(Color.blue); 
     c.add(st1); 
     str1.setForeground(Color.blue); 
     c.add(str1); 
     st2.setForeground(Color.blue); 
     c.add(st2); 
     str2.setForeground(Color.blue); 
     c.add(str2); 
     str2.addActionListener(this);  
     same1.setForeground(Color.blue); 
     c.add(same1);  
     same2.setForeground(Color.blue); 
     c.add(same2); 
     results.setForeground(Color.blue); 
     c.add(results); 




    } 

    public void actionPerformed(ActionEvent e) 
    { 
     String str1, str2; 

     if (str1.equals(str2)) // s1 == s2 
      same1.setText("Same string"); 
     else if (str1.equalsIgnoreCase(str2)) 
      same2.setText("Same string - different case"); 
     else if (str1.compareTo(str2) > 0) // s1 > s2 
      results.setText(str1 + " is alphabetically greater than " 
        + str2); 
     else  // s1 < s2 
      results.setText(str1 + " is alphabetically less than " 
        + str2); 
     results.setText("Difference is " + (str1.compareTo(str2)) /*i keep getting an error here as well in eclipse, no clue */ 
    } 

} 
+0

Seien Sie sicher, dass die [Java-Konsole] (http://www.java.com/en/download/help/javaconsole.xml) zu zeigen, konfiguriert ist. Wenn auf der Standardstufe keine Ausgabe erfolgt, erhöhen Sie die Stufe und versuchen Sie es erneut. –

Antwort

2

Entfernen Sie die abstract Schlüsselwort aus der Deklaration der Klasse, so dass es

instanziiert werden kann
public abstract class ex7_2 extends JApplet implements ActionListener { 
    ^
2

Ihr Beispiel trägt mehrere Beobachtungen:

  • Wie here gezeigt, eine abstract Klasse kann nicht instanziert werden direkt.

  • In actionPerformed() sollten die lokalen Zeichenfolgen auf die entsprechenden Textfeldwerte festgelegt werden.

  • Beachten Sie die überarbeitete Logik in actionPerformed() unten.

  • Ihr letzter Fehler stammt von einem fehlenden Semikolon.

  • Beachten Sie die Verwendung der Komponenteninitialisierung, um die Anfangsgröße festzulegen.

  • Betrachten Sie die verwandten Applets Probleme here vorwärts gehen.

  • Siehe auch Initial Threads.

image

//<applet code="ex7_2.class" width=500 height=100></applet> 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class ex7_2 extends JApplet implements ActionListener { 

    JLabel st1 = new JLabel("Enter a string: "); 
    JTextField str1 = new JTextField(8); 
    JLabel st2 = new JLabel("Enter a string: "); 
    JTextField str2 = new JTextField(8); 
    JLabel equals = new JLabel("  "); 
    JLabel compare = new JLabel("  "); 
    JLabel results = new JLabel("  "); 
    FlowLayout flow = new FlowLayout(FlowLayout.LEFT, 8, 8); 

    @Override 
    public void init() { 
     Container c = getContentPane(); 
     c.setLayout(flow); 
     c.setBackground(Color.lightGray); 
     st1.setForeground(Color.blue); 
     c.add(st1); 
     str1.setForeground(Color.blue); 
     c.add(str1); 
     st2.setForeground(Color.blue); 
     c.add(st2); 
     str2.setForeground(Color.blue); 
     c.add(str2); 
     str2.addActionListener(this); 
     equals.setForeground(Color.blue); 
     c.add(equals); 
     compare.setForeground(Color.blue); 
     c.add(compare); 
     results.setForeground(Color.blue); 
     c.add(results); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     String s1 = str1.getText(); 
     String s2 = str2.getText(); 
     if (s1.equals(s2)) { 
      equals.setText("Same strings."); 
     } else if (s1.equalsIgnoreCase(s2)) { 
      equals.setText("Same strings, different case."); 
     } else { 
      equals.setText("Different strings."); 
     } 
     if (s1.compareTo(s2) > 0) { 
      compare.setText(s1 + " is alphabetically greater than " + s2 + "."); 
     } else { 
      compare.setText(s1 + " is alphabetically less than " + s2 + "."); 
     } 
     results.setText("Difference is " + (s1.compareTo(s2) + ".")); 
    } 
}