Vorgefertigte Klassen

lucien

Mitglied
Hallo in der Schule ist BlueJ so eingestellt, dass man mehr Klassen zur Auswahl hat. Dies sind dann normale Klasse, in denen der Code wie z.B. initFrame oder der Actionlistener schon geschrieben ist. Damit spart man sich Zeit und macht auch keine Fehler. Wie unser Lehrer nun mal ist hat er uns nicht gezeigt, wie man diese Klassen "anstellt" Wisst ihr es? Denn bei den Hausaufgaben habe ich aus einer dieser Klassen etwas Kopiert aber es funzt nicht.
(Code)
Java:
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Lotto
{ 
    int a,b,c,d,e,f;
    int g,h,i,j,k,l;
    TextField tf1, tf2, tf3, tf4, tf5, tf6;
    Label lb1,lb2,lb3,lb4,lb5,lb6,lb7,lb8,lb9,lb10;
    JButton bt1;
    public Lotto()
    {
     Random rand = new Random();
     a = (rand.nextInt(49))+1;
     b = (rand.nextInt(49))+1;
     c = (rand.nextInt(49))+1;
     d = (rand.nextInt(49))+1;
     e = (rand.nextInt(49))+1;
     f = (rand.nextInt(49))+1;
     initFrame();
    }
     public void initFrame() {
        setTitle("Lotto");
        setLayout(new BorderLayout());
        Panel Panel1=new Panel(new GridLayout(2,7));
        Panel.add(tf1);
    }
}

Er kennt die Befehle in intitFrame nicht. Wenn ich mir diese Klasse erstellen könnte wäre das Problem ja gelöst
Danke im Vorraus!
LG Lucien
 

javampir

Bekanntes Mitglied
hi,
ich kenne diese klassen nicht, ich kann nur vermutungen anstellen.
versuch mal in der ersten zeile der klassendefinition public class Lotto extends JFrame zu schreiben. dann müsstenst du in der sersten zeile des konstruktors super() aufrufen. in initFrame schreibst du:

Java:
public void initFrame() {
    setTitle("Lotto");
    setLayout(new BorderLayout());
    Panel panel1=new Panel(new GridLayout(2,7));
    panel1.add(tf1);
    add(panel1, "Center");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 400);
    setVisible(true);
}

mehr kann ich hier leider nicht erraten.
javampir
 

lucien

Mitglied
Ich hab den Fehler gefunden ich musste JPanel und ActionListener implementieren/exportieren, also am Anfagn schreiben:
public class Lotto extends JFrame implements ActionListener

Mich würde aber trotztdem interessieren, wo ich diese Klassen herbekomme.
 

lucien

Mitglied
Klappt doch nicht..
er sagt immer: class Lotto is not abstract....
Jetzt hab ich Lotto zur abstrakten Klasse gemacht und alles funktioniert bis jetzt. Aber bei einem anderem Programm hat es doch auch funktioniert.
Was also ist dabei falsch?
 

lucien

Mitglied
Das nicht funktionierende Lotto Programm: (Ich kann die Klasse nicht ausführen)
Java:
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public abstract class Lotto extends JFrame implements ActionListener
{ 
    int a,b,c,d,e,f;
    int g,h,i,j,k,l;
    TextField tf1, tf2, tf3, tf4, tf5, tf6;
    Label lb1,lb2,lb3,lb4,lb5,lb6,lb7,lb8,lb9,lb10;
    JButton bt1;
    public Lotto()
    {
     Random rand = new Random();
     a = (rand.nextInt(49))+1;
     b = (rand.nextInt(49))+1;
     c = (rand.nextInt(49))+1;
     d = (rand.nextInt(49))+1;
     e = (rand.nextInt(49))+1;
     f = (rand.nextInt(49))+1;
     initFrame();
    }
     public void initFrame() {
        setTitle("Lotto");
        setLayout(new BorderLayout());
        Panel Panel1=new Panel(new GridLayout(2,7));
        tf1=new TextField("");
        tf2=new TextField("");
        tf3=new TextField("");
        tf4=new TextField("");
        tf5=new TextField("");
        tf6=new TextField("");
        Panel1.add(tf1);
        Panel1.add(tf2);
        Panel1.add(tf3);
    }
}

Der funktionierende Rechner mit dem selben Grundansatz, was das panel angeht:
Java:
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Rechner extends JFrame implements ActionListener
{
    JButton bt1,bt2,bt3,bt4, bt5;
    double x,y,z;
    int a,b,c;
    Label lb1, lb2, lb3, lb4;
    TextField tf1, tf2;
    
    public static void main(String[] args) {
        new Rechner();
    }
    
    public Rechner() {
        initFrame();
    }
    
    public void initFrame() {
        setTitle("Rechner");
        setLayout(new BorderLayout());
        JPanel panel = new JPanel(new GridLayout(1,4));
        JPanel panel2 = new JPanel(new GridLayout(3,2));
        JPanel panel3 = new JPanel(new GridLayout(1,1));
        bt1 = new JButton("+");
        bt2 = new JButton("-");
        bt3 = new JButton("X");
        bt4 = new JButton(":");
        Font f = new Font("Arial",Font.PLAIN,16);
        bt1.setFont(f);bt2.setFont(f);
        bt1.addActionListener(this);
        bt2.addActionListener(this);
        bt3.setFont(f);bt4.setFont(f);
        bt3.addActionListener(this); 
        bt4.addActionListener(this);
        panel.add(bt1);
        panel.add(bt2);
        panel.add(bt3);
        panel.add(bt4);
        add("South",panel);
        lb1= new Label();
        lb2= new Label();
        lb3= new Label();
        lb4= new Label();
        tf1 = new TextField("");
        tf2 = new TextField("");
        lb1.setText("x=");
        lb2.setText("y=");
        lb3.setText("Ergebnis");
        lb4.setText("");
        panel2.add(lb1);
        panel2.add(tf1);
        panel2.add(lb2);
        panel2.add(tf2);
        panel2.add(lb3);
        panel2.add(lb4);
        add("Center",panel2);
        bt5=new JButton("Zufallsfarbe");
        panel3.add(bt5);
        add("North", panel3);
        panel.setSize(300,300);
        setSize(400,400);
        setVisible(true);
    }
 
     public void actionPerformed(ActionEvent e) {
     if (e.getSource()==bt1) {
       x=Double.parseDouble(tf1.getText());
       y=Double.parseDouble(tf2.getText());
       z=x+y;
       lb4.setText(""+z);
     }
     if (e.getSource()==bt2) {
         x=Double.parseDouble(tf1.getText());
       y=Double.parseDouble(tf2.getText());
       z=x-y;
       lb4.setText(""+z);
     }
      if (e.getSource()==bt3) {
         x=Double.parseDouble(tf1.getText());
       y=Double.parseDouble(tf2.getText());
       z=x*y;
       lb4.setText(""+z);
     }
     if (e.getSource()==bt4) {
         x=Double.parseDouble(tf1.getText());
       y=Double.parseDouble(tf2.getText());
       z=x/y;
       lb4.setText(""+z);
     }
     if (e.getSource()==bt5) {
         Random rand=new Random();
         a = rand.nextInt(255); 
         Random rand2=new Random();
         b = rand2.nextInt(255); 
          Random rand3=new Random();
         c = rand3.nextInt(255); 
         Color Hintergrund = new Color (a, b, c);  
     
    }
    
   
}
}
 

JavaMeister

Gesperrter Benutzer
Ich sehe....

Du musst Dir erstmal im klaren werden, was der Unterschied zwischen einer abstrakten Klasse und einer normalen ist.

(Hinweis: Von einer abstrakten Klasse kann man keine Instanzen erstellen, weil diese i.d.R. Methoden enthalten, die nicht ausimplementiert sind.)

Dann muss man sich im Klaren sein, was das hier beduetet:

implements ActionListener

Was ist ActionListener?!

Siehe: ActionListener (Java Platform SE 6)

Was macht dieses Interface?
 

Neue Themen


Oben