PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Java.. Bräuchte Hilfe


Fettkopp
2006-12-30, 23:22:47
Mahlzeit hab da ein kleines Problem mit meinem Programm. Mein Programmierstil ist vielleicht nicht grade der beste. Aber nun hakt mein Programm an einer Stelle.

Und zwar soll, je nachdem ob q,w,e,r gedrückt wird. Das geöffnete Fenster in einer anderen Farbe erscheinen. Nur wird die Variable "z" nicht an die Paintmethode übergeben. Wie gebe ich die Variable an diese weiter??

import java.awt.*;
import java.io.*;

public class Fenster extends Frame
{
private int z;
public static char readChar() {

BufferedReader din = new BufferedReader(
new InputStreamReader(System.in));

char x;

try {
x = din.readLine().charAt(0);
} catch (Exception e) {
x = '\n';
}
return x;
}

public Fenster(int z) // hier kommt die Variable an
{
setSize(700,500);
setVisible(true);
}

public void paint(Graphics g)
{
g.setColor(new Color(z,0,0)); // Hier soll die "z" Variable ankommen
g.fillRect(0,0,100,100);
}

public static void main(String[] args)
{
System.out.println("4 Farbiges Fensterprogramm");


char frage = readChar();

if (frage == 'q')
{
Frame w = new Fenster(255); // Hier wird ein Wert übergeben
}
else if (frage == 'w')
{
Frame w = new Fenster(0); // oder hier
}
else if (frage == 'e')
{
Frame w = new Fenster(50); // oder hier
}
else if (frage == 'r')
{
Frame w = new Fenster(100); // oder hier
}
}
}

RMC
2006-12-30, 23:28:15
dir fehlt nur die Zeile

this.z = z;

im Konstruktor der Fenster-Klasse.

Matrix316
2006-12-30, 23:29:35
Hmmmm...so?


public Fenster(int z) // hier kommt die Variable an
{
this.z = z;
setSize(700,500);
setVisible(true);
}



EDIT: Zwei dumme.... ;)

Fettkopp
2006-12-31, 00:11:19
oh danke, ihr seid meine persönlichen Helden ;D :) das ging schnell..


jetzt hab ich nur noch ein Problem... das Consolenfenster ist im Vordergrund. Jedoch soll das erstelle Java Fenster in den Vordergrund poppen. Gibt es da ne Möglichkeit?

Monger
2006-12-31, 01:49:35
jetzt hab ich nur noch ein Problem... das Consolenfenster ist im Vordergrund. Jedoch soll das erstelle Java Fenster in den Vordergrund poppen. Gibt es da ne Möglichkeit?

Ein kurzer Blick in die API zeigt: jedes Frame leitet sich von der AWT Window Klasse ab, und die besitzt eine Methode "toFront()" um ein Fenster in den Vordergrund zu schieben:
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Window.html#toFront()

Da dein Fenster Objekt ein Frame und somit auch ein Window ist, musst du nur irgendwo hinschreiben:

this.toFront();


Alle Fensterkommandos sind übrigens aber nur Bitten, aber keine Zwänge. Soll heißen: du kannst das Betriebssystem höflich darum bitten, den Focus zu bekommen oder ein Fenster in den Vordergrund zu legen, aber das Betriebssystem darf diese Bitte auch ablehnen. Also nicht auf die dämliche Idee kommen, für irgendwelchen Code stillschweigend vorauszusetzen dass das Fenster tatsächlich auch so aussieht wie man sich das denkt.

Fettkopp
2006-12-31, 11:47:45
Ein kurzer Blick in die API zeigt: jedes Frame leitet sich von der AWT Window Klasse ab, und die besitzt eine Methode "toFront()" um ein Fenster in den Vordergrund zu schieben:
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Window.html#toFront()

Da dein Fenster Objekt ein Frame und somit auch ein Window ist, musst du nur irgendwo hinschreiben:

this.toFront();


Alle Fensterkommandos sind übrigens aber nur Bitten, aber keine Zwänge. Soll heißen: du kannst das Betriebssystem höflich darum bitten, den Focus zu bekommen oder ein Fenster in den Vordergrund zu legen, aber das Betriebssystem darf diese Bitte auch ablehnen. Also nicht auf die dämliche Idee kommen, für irgendwelchen Code stillschweigend vorauszusetzen dass das Fenster tatsächlich auch so aussieht wie man sich das denkt.

Hi, alles klar. this.toFront(); hat jedenfalls so funktioniert wie es soll. Das Bunte Fenster bekommt nach einer Eingabe direkt den Focus.
Habs nu so gemacht, dass anstatt einem Integer, ein STring mit einem Bildname übergeben wird. So öffnet sich ein schickes Bild in einem Fenster :wink:

Besten dank an alle, das Programm wird heute abend direkt benötigt ^^ Ist für eine Quizshow *G*