G
guest2123
Gast
Hallo,
ich hab einen Reaktionstester geschrieben. Ich glaube wie der genau Funktioniert ist egal, weil das zur Fehlersuche denke ich nicht gebraucht wird, wenn doch bitte sagen!
Fehler in Zeile 60: The constructor Label_Scrollbar(int, MainFrame) is undefined
Der Konstruktor dazu befindet sich in Zeile: 179
Ich verstehe überhaupt nicht warum das nicht gehn soll, denn die Übergabeparamenter passen doch oder?
Mit this, übergebe ich das Objekt MainFrame und speichere es in LevelChangeObserver und integer to integer dürfte auch passen oder?
Bitte erklärt mir warum das nicht funktioniert.
Danke!
mfg
guest
Hier das Programm:
ich hab einen Reaktionstester geschrieben. Ich glaube wie der genau Funktioniert ist egal, weil das zur Fehlersuche denke ich nicht gebraucht wird, wenn doch bitte sagen!
Fehler in Zeile 60: The constructor Label_Scrollbar(int, MainFrame) is undefined
Der Konstruktor dazu befindet sich in Zeile: 179
Ich verstehe überhaupt nicht warum das nicht gehn soll, denn die Übergabeparamenter passen doch oder?
Mit this, übergebe ich das Objekt MainFrame und speichere es in LevelChangeObserver und integer to integer dürfte auch passen oder?
Bitte erklärt mir warum das nicht funktioniert.
Danke!
mfg
guest
Hier das Programm:
Java:
MainFrame.java(da wo instanziert wird):
package Reaktionstester;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import LevelTools.*;
import java.util.*;
public class MainFrame extends JFrame implements LevelChangeObserver {
// Konstante für Wartezeit Timer
private static final int RAND_RANGE = 600;
private static final int RAND_OFFS = 200;
private JPanel colorPane;
private JButton b_react;
private LED_Anzeige anzeige;
private boolean started = false;
private javax.swing.Timer myTimer;
private Random myrand;
private long starttime;
private Label_Scrollbar sb_level;
private int level = Label_Scrollbar.LEICHT;
/**
*
*/
public MainFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
FrameInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
public void change_level(int new_level) {
level = new_level;
}
private void FrameInit() throws Exception {
JPanel contentPane = (JPanel) getContentPane();
contentPane.setLayout(new BorderLayout());
setSize(new Dimension(400, 300));
setTitle("Reaktionstester Vers. 2.1");
colorPane = new JPanel(new FlowLayout());
b_react = new JButton("START");
colorPane.add(b_react);
contentPane.add(colorPane, BorderLayout.CENTER);
colorPane.setBackground(Color.RED);
b_react.addActionListener(new Button_Listener());
anzeige = new LED_Anzeige(10);
contentPane.add(anzeige, BorderLayout.SOUTH);
sb_level = new Label_Scrollbar(Label_Scrollbar.LEICHT,this);
contentPane.add(sb_level, BorderLayout.EAST);
// Random-Generator erzeugen
myrand = new Random();
// Timer erzeugen (noch nicht starten)
myTimer = new javax.swing.Timer(getRand(RAND_OFFS), new Timer_Listener());
}
/**
* liefert einen zufälligen Zeitwert (Zufallszahl + Offset) für den Timer
*/
private int getRand(int offset) {
return (myrand.nextInt(RAND_RANGE) + offset);
}
/**
* zeigt den Wert der Reaktionszeit an
*
* @param val
*/
private void show_value(long val) {
// l_time.setText(Long.toString(val));
anzeige.setValue((short) val);
}
/**
* Farbwechsel
*/
private void changeColor() {
if (colorPane.getBackground() == Color.RED) {
colorPane.setBackground(Color.GREEN);
} else {
colorPane.setBackground(Color.RED);
}
}
/**
* Handler für Reaktions-Button
*/
private void buttonHandler() {
if (!started) {
b_react.setText("PRESS");
started = true;
} else {
long t_react = System.currentTimeMillis() - starttime;
myTimer.setInitialDelay(getRand(getOffset()));
show_value(t_react);
}
myTimer.start();
b_react.setEnabled(false);
}
private int getOffset() {
int offset=0;
switch(level)
{
case Label_Scrollbar.LEICHT:
offset = 1000;
break;
case Label_Scrollbar.MITTEL:
offset = 500;
break;
case Label_Scrollbar.SCHWER:
offset = 200;
break;
}
return(offset);
}
/**
* Handler für Timer
*/
private void timerHandler() {
myTimer.stop();
changeColor();
starttime = System.currentTimeMillis();
b_react.setEnabled(true);
}
private class Timer_Listener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
timerHandler();
}
}
private class Button_Listener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
buttonHandler();
}
}
}
Label_Scrollbar.java(da wo der Konstruktor ist):
package LevelTools;
import java.awt.*;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import javax.swing.*;
public class Label_Scrollbar extends JScrollBar {
public static final int SCHWER = 2;
public static final int MITTEL = 1;
public static final int LEICHT = 0;
LevelChangeObserver cb;
private int level;
public Label_Scrollbar(int level, LevelChangeObserver cb) {
super(JScrollBar.VERTICAL, 1, 1, 0, 3);
this.cb=cb;
this.level=level;
addAdjustmentListener(new Scrollbar_Listener());
color_Change();
}
private void color_Change() {
switch(level)
{
case LEICHT:
setBackground(Color.GREEN);
break;
case MITTEL:
setBackground(Color.ORANGE);
break;
case SCHWER:
setBackground(Color.RED);
break;
}
}
private void sb_handler(AdjustmentEvent ae) {
level=getValue();
color_Change();
cb.change_level(level);
}
private class Scrollbar_Listener implements AdjustmentListener {
public void adjustmentValueChanged(AdjustmentEvent ae) {
sb_handler(ae);
}
}
}
---
LevelChangeObserver.java(das interface):
package LevelTools;
public interface LevelChangeObserver {
public void change_level(int value);
}