K
Kami
Gast
hallo liebe progRamer
ich habe mal wieder ein kleines problem bei meinem farbenspiel :
wenn das spielfenster kurz inaktiv ist, bzw. wenn man mit einem anderen fenster (zum beispiel ein chatfenster etc.) drüberschweift, verschwindet das rechteckt (g.fillRect)...
vielleicht wisst ihr ja weiter
hier ist mal der code
ich habe mal wieder ein kleines problem bei meinem farbenspiel :
wenn das spielfenster kurz inaktiv ist, bzw. wenn man mit einem anderen fenster (zum beispiel ein chatfenster etc.) drüberschweift, verschwindet das rechteckt (g.fillRect)...
vielleicht wisst ihr ja weiter
hier ist mal der code
Code:
package informatikaufgabe;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import java.io.*;
import javax.sound.midi.*;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.net.URL;
import javax.sound.midi.Sequencer;
import javax.swing.JLabel;
/**
*
Überschrift: </p>
*
Beschreibung: </p>
*
Copyright: Copyright (c) 2007 Bernd Feddersen</p>
*
Organisation: Bernd Company</p>
* @author Kami(Bernd Feddersen)
* @version 1.0
*/
public class InformatikAufgabeFrame extends JFrame {
//deklarieren
Color zufall,red,blue,green;
int x,y,z;
public int rot;
public int gruen;
public int blau;
public Sequencer sequencer;
public Sequence seq;
public void paint (Graphics g) {
super.paint(g);
}
JPanel contentPane;
JScrollBar s1 = new JScrollBar();
JScrollBar s2 = new JScrollBar();
JScrollBar s3 = new JScrollBar();
JTextField rotwert = new JTextField();
JTextField gruenwert = new JTextField();
JTextField blauwert = new JTextField();
JTextField rgbwerte = new JTextField();
JButton startstop = new JButton(new ImageIcon("data\\soundan.gif"));
JButton solution = new JButton(new ImageIcon("data\\lösung1.gif"));
JButton spielstarten = new JButton(new ImageIcon("data\\normalstartbtn.gif"));
//rollover icon
Icon rolloverIcon = new ImageIcon("data\\overstartbtn.gif");
Icon rolloverIcon2 = new ImageIcon("data\\lösung2.gif");
Icon soundanover = new ImageIcon("data\\soundanover.gif");
Icon soundoffover = new ImageIcon("data\\soundausover.gif");
Icon verloren = new ImageIcon("data\\verloren.gif");
//pressed icon
Icon pressedIcon = new ImageIcon("data\\pressedstartbtn.gif");
Icon pressedIcon2 = new ImageIcon("data\\lösung3.gif");
Icon soundoffpressed = new ImageIcon("data\\soundaus.gif");
Icon soundanpressed = new ImageIcon("data\\soundan.gif");
JLabel bild = new JLabel(new ImageIcon("data\\intro.gif"));
JLabel greetz = new JLabel();
JPanel oben = new JPanel();
JLabel banner = new JLabel(new ImageIcon("data\\gewonnen.gif"));
Icon banner2 = new ImageIcon("data\\gewonnen.gif");
JPanel unten = new JPanel();
JTextPane winlose = new JTextPane();
//Den Frame konstruieren
public InformatikAufgabeFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Initialisierung der Komponenten
private void jbInit() throws Exception {
//Sequencer initialisieren,öffnen und midi regeln
sequencer= MidiSystem.getSequencer();
sequencer.open();
seq = MidiSystem.getSequence(new File("data\\mc_gyver.mid"));
sequencer.setSequence(seq);
sequencer.setTempoInBPM(145);
sequencer.start();
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
this.getContentPane().setBackground(Color.gray);
this.setContentPane(contentPane);
this.setCursor(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setForeground(Color.lightGray);
this.setLocale(java.util.Locale.getDefault());
this.setResizable(false);
this.setSize(new Dimension(450,500));
this.setState(Frame.NORMAL);
this.setTitle("Farbenspiel");
s1.setName("rot");
s1.setBounds(new Rectangle(9, 312, 287, 23));
s1.setOrientation(JScrollBar.HORIZONTAL);
s1.setEnabled(false);
s1.setMaximum(265);
s1.setMinimum(0);
s1.setPreferredSize(new Dimension(17, 48));
s1.addAdjustmentListener(new InformatikAufgabeFrame_s1_adjustmentAdapter(this));
s2.setName("grün");
s2.setBounds(new Rectangle(9, 344, 287, 23));
s2.setOrientation(JScrollBar.HORIZONTAL);
s2.setEnabled(false);
s2.setMaximum(265);
s2.setMinimum(0);
s2.setPreferredSize(new Dimension(17, 48));
s2.addAdjustmentListener(new InformatikAufgabeFrame_s2_adjustmentAdapter(this));
s3.setName("blau");
s3.setBounds(new Rectangle(9, 375, 287, 23));
s3.setOrientation(JScrollBar.HORIZONTAL);
s3.setEnabled(false);
s3.setMaximum(265);
s3.setMinimum(0);
s3.setPreferredSize(new Dimension(17, 48));
s3.addAdjustmentListener(new InformatikAufgabeFrame_s3_adjustmentAdapter(this));
contentPane.setBackground(Color.black);
contentPane.setEnabled(true);
contentPane.setFont(new java.awt.Font("MS Sans Serif", 0, 11));
contentPane.setForeground(Color.black);
contentPane.setAlignmentX((float) 0.5);
contentPane.setDebugGraphicsOptions(0);
contentPane.setDoubleBuffered(false);
contentPane.setNextFocusableComponent(this);
rotwert.setEditable(false);
rotwert.setText("Rot :0");
rotwert.setBounds(new Rectangle(305, 312, 88, 20));
gruenwert.setEditable(false);
gruenwert.setText("Grün :0");
gruenwert.setBounds(new Rectangle(305, 345, 88, 20));
blauwert.setEditable(false);
blauwert.setText("Blau :0");
blauwert.setBounds(new Rectangle(305, 376, 88, 20));
rgbwerte.setEditable(false);
rgbwerte.setBounds(new Rectangle(110, 427, 175, 27));
solution.setBounds(new Rectangle(17, 429, 86, 24));
solution.setEnabled(false);
solution.setDoubleBuffered(true);
solution.setToolTipText("Looser!!!");
solution.setContentAreaFilled(false);
solution.setFocusPainted(false);
solution.setPressedIcon(pressedIcon2);
solution.setRolloverIcon(rolloverIcon2);
solution.setText("");
solution.addActionListener(new InformatikAufgabeFrame_solution_actionAdapter(this));
spielstarten.setBounds(new Rectangle(131, 10, 177, 27));
spielstarten.setDoubleBuffered(true);
spielstarten.setToolTipText("Klicken um zu starten!");
spielstarten.setBorderPainted(true);
spielstarten.setContentAreaFilled(false);
spielstarten.setFocusPainted(false);
spielstarten.setPressedIcon(pressedIcon);
spielstarten.setRolloverIcon(rolloverIcon);
spielstarten.addActionListener(new InformatikAufgabeFrame_spielstarten_actionAdapter(this));
bild.setBackground(Color.black);
bild.setEnabled(true);
bild.setForeground(Color.black);
bild.setVerifyInputWhenFocusTarget(false);
bild.setDisplayedMnemonic('0');
bild.setHorizontalTextPosition(SwingConstants.TRAILING);
bild.setText("");
bild.setBounds(new Rectangle(85, 30, 272, 224));
bild.setVisible(true);
bild.setDoubleBuffered(true);
bild.setRequestFocusEnabled(false);
startstop.setBounds(new Rectangle(2, 3, 58, 38));
startstop.setDoubleBuffered(true);
startstop.setContentAreaFilled(false);
startstop.setFocusPainted(false);
startstop.setIcon(soundanpressed);
startstop.setPressedIcon(soundanpressed);
startstop.setRolloverIcon(soundanover);
startstop.setText("");
startstop.addActionListener(new InformatikAufgabeFrame_startstop_actionAdapter(this));
greetz.setFont(new java.awt.Font("Comic Sans MS", 1, 35));
greetz.setForeground(Color.cyan);
greetz.setDoubleBuffered(true);
greetz.setRequestFocusEnabled(false);
greetz.setHorizontalAlignment(SwingConstants.LEADING);
greetz.setText("Viel Spaß!");
greetz.setBounds(new Rectangle(116, 40, 200, 200));
oben.setBackground(Color.white);
oben.setBounds(new Rectangle(-2, 0, 470, 38));
banner.setText("");
banner.setBounds(new Rectangle(-25, 244, 510, 62));
banner.setVisible(false);
banner.setIcon(banner2);
unten.setBackground(Color.white);
unten.setBounds(new Rectangle(-5, 244, 463, 62));
winlose.setBackground(Color.black);
winlose.setEnabled(false);
winlose.setForeground(Color.pink);
winlose.setDisabledTextColor(Color.pink);
winlose.setEditable(false);
winlose.setText("");
winlose.setBounds(new Rectangle(80, 39, 603, 204));
contentPane.add(s1, null);
contentPane.add(s2, null);
contentPane.add(s3, null);
contentPane.add(gruenwert, null);
contentPane.add(rotwert, null);
contentPane.add(blauwert, null);
contentPane.add(rgbwerte, null);
contentPane.add(bild, null);
contentPane.add(solution, null);
contentPane.add(startstop, null);
contentPane.add(spielstarten, null);
contentPane.add(oben, null);
contentPane.add(banner, null);
contentPane.add(unten, null);
contentPane.add(winlose, null);
contentPane.add(greetz, null);
}
//Überschrieben, so dass eine Beendigung beim Schließen des Fensters möglich ist
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void s1_adjustmentValueChanged(AdjustmentEvent e) {
Graphics g = getGraphics();
Object s = e.getSource();
if (s == s1 || s == s2 || s == s3) {
rot = s1.getValue(); // Farbfeld wird umgefärbt
gruen = s2.getValue();
blau = s3.getValue();
g.setColor(new Color(rot, gruen, blau));
g.fillOval(140, 95, 150, 150);
rotwert.setText("Rot :" + s1.getValue());
}
}
void s2_adjustmentValueChanged(AdjustmentEvent e) {
Graphics g = getGraphics();
Object s = e.getSource();
if(s==s1 || s==s2 || s==s3){
rot = s1.getValue(); // Farbfeld wird umgefärbt
gruen = s2.getValue();
blau = s3.getValue();
g.setColor(new Color(rot, gruen, blau));
g.fillOval(140,95,150,150);
gruenwert.setText("Grün :"+s2.getValue());
}
}
void s3_adjustmentValueChanged(AdjustmentEvent e) {
Graphics g = getGraphics();
Object s = e.getSource();
if(s==s1 || s==s2 || s==s3){
rot = s1.getValue(); // Farbfeld wird umgefärbt
gruen = s2.getValue();
blau = s3.getValue();
g.setColor(new Color(rot, gruen, blau));
g.fillOval(140,95,150,150);
blauwert.setText("Blau :"+s3.getValue());
}
}
void solution_actionPerformed(ActionEvent e) {
rgbwerte.setText("R:"+x+" "+"G:"+y+" "+"B:"+z );
double result = 0;
int tolerance = 5;
result += (double) (255 - Math.abs(x-s1.getValue()))/255;
result += (double) (255-Math.abs(y-s2.getValue()))/255;
result += (double) (255-Math.abs(z-s3.getValue()))/255;
result = Math.round(100*(result/3*100))/100.0;
if ((100-tolerance)<=result) {
banner.setVisible(true);
greetz.setVisible(false);
winlose.setVisible(true);
winlose.setBounds(new Rectangle(80, 39, 603, 204));
winlose.setFont(new java.awt.Font("Comic Sans MS", 1, 23));
winlose.setText("Du hast gewonnen,\nGLÜCKWUNSCH!\nDeine Genauigkeit liegt bei\n" + result + " %");
}
else {
banner.setVisible(true);
banner.setIcon(verloren);
greetz.setVisible(false);
winlose.setVisible(true);
winlose.setFont(new java.awt.Font("Comic Sans MS", 1, 23));
winlose.setBounds(new Rectangle(80, 39, 603, 204));
winlose.setText("Du hast leider verloren,\nPech gehabt! Deine\nGenauigkeit liegt nur bei\n"+ result + " %");
}
}
void spielstarten_actionPerformed(ActionEvent e) {
solution.setEnabled(true);
banner.setVisible(false);
winlose.setVisible(false);
s1.setEnabled(true);
s2.setEnabled(true);
s3.setEnabled(true);
s1.setValue(0);
s2.setValue(0);
s3.setValue(0);
Graphics g = getGraphics();
Random generator = new Random();
x = (int) (generator.nextInt(255));
y = (int) (generator.nextInt(255));
z = (int) (generator.nextInt(255));
zufall = new Color(x, y, z);
bild.setVisible(false);
g.setColor(zufall);
g.fillRect(115, 70, 200, 200);
g.setColor(Color.black);
g.fillOval(140,95,150,150);
}
void startstop_actionPerformed(ActionEvent e) {
if (sequencer.isRunning()) {
startstop.setIcon(soundoffpressed);
startstop.setPressedIcon(soundoffpressed);
startstop.setRolloverIcon(soundoffover);
sequencer.stop();
sequencer.close();
}
else if (!sequencer.isRunning()) {
startstop.setIcon(soundanpressed);
startstop.setPressedIcon(soundanpressed);
startstop.setRolloverIcon(soundanover);
try {
sequencer.open();
}
catch (MidiUnavailableException ex1) {
}
try {
sequencer.setSequence(seq);
}
catch (InvalidMidiDataException ex) {
}
try {
sequencer.open();
}
catch (MidiUnavailableException ex1) {
}
sequencer.start();
}
}
}
class InformatikAufgabeFrame_s1_adjustmentAdapter implements java.awt.event.AdjustmentListener {
InformatikAufgabeFrame adaptee;
InformatikAufgabeFrame_s1_adjustmentAdapter(InformatikAufgabeFrame adaptee) {
this.adaptee = adaptee;
}
public void adjustmentValueChanged(AdjustmentEvent e) {
adaptee.s1_adjustmentValueChanged(e);
}
}
class InformatikAufgabeFrame_s2_adjustmentAdapter implements java.awt.event.AdjustmentListener {
InformatikAufgabeFrame adaptee;
InformatikAufgabeFrame_s2_adjustmentAdapter(InformatikAufgabeFrame adaptee) {
this.adaptee = adaptee;
}
public void adjustmentValueChanged(AdjustmentEvent e) {
adaptee.s2_adjustmentValueChanged(e);
}
}
class InformatikAufgabeFrame_s3_adjustmentAdapter implements java.awt.event.AdjustmentListener {
InformatikAufgabeFrame adaptee;
InformatikAufgabeFrame_s3_adjustmentAdapter(InformatikAufgabeFrame adaptee) {
this.adaptee = adaptee;
}
public void adjustmentValueChanged(AdjustmentEvent e) {
adaptee.s3_adjustmentValueChanged(e);
}
}
class InformatikAufgabeFrame_solution_actionAdapter implements java.awt.event.ActionListener {
InformatikAufgabeFrame adaptee;
InformatikAufgabeFrame_solution_actionAdapter(InformatikAufgabeFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.solution_actionPerformed(e);
}
}
class InformatikAufgabeFrame_spielstarten_actionAdapter implements java.awt.event.ActionListener {
InformatikAufgabeFrame adaptee;
InformatikAufgabeFrame_spielstarten_actionAdapter(InformatikAufgabeFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.spielstarten_actionPerformed(e);
}
}
class InformatikAufgabeFrame_startstop_actionAdapter implements java.awt.event.ActionListener {
InformatikAufgabeFrame adaptee;
InformatikAufgabeFrame_startstop_actionAdapter(InformatikAufgabeFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.startstop_actionPerformed(e);
}
}