Ich habe eine Klasse CorsiBloecke (Subklasse von JPanel) und eine Klasse CorsiQuadrate (Subklasse von Button). CorsiBloecke ordnet einige Instanzen von CorsiQuadrate auf einem schwarzen Panel an. Wunderlicherweise werden die Buttons in WHITE angezeigt, obwohl ich sie eigens in BLUE umgefärbt habe.
Das andere Probmel ist das: Wenn die Buttons auf schwarzem Hintergrund und blau eingefärbt sind, haben sie trotzdem noch einen feinen weißen Rahmen. Kann man diesen beseitigen? Der zusätzliche weiße Rahmen der sich einblendet wenn man mit der Maus über die Buttons fährt, sollte möglichst erhalten bleiben.
Das andere Probmel ist das: Wenn die Buttons auf schwarzem Hintergrund und blau eingefärbt sind, haben sie trotzdem noch einen feinen weißen Rahmen. Kann man diesen beseitigen? Der zusätzliche weiße Rahmen der sich einblendet wenn man mit der Maus über die Buttons fährt, sollte möglichst erhalten bleiben.
Java:
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Array;
import java.util.ArrayList;
import javax.swing.*;
public class CorsiBloecke extends JPanel {
//Deklarationsteil
CorsiQuadrat block1, block2, block3, block4, block5, block6, block7, block8, block9;
ArrayList<Integer> eingabeSequenzVP;
int i =0;
//Konstruktor
public CorsiBloecke() {
eingabeSequenzVP= new ArrayList<Integer>();
//Panel erzeugen
this.setLayout(null);
this.setBackground(Color.BLACK);
this.setVisible(true);
//Corsi-Bklöcke erzeugen
block1 = new CorsiQuadrat("1");
block2 = new CorsiQuadrat("2");
block3 = new CorsiQuadrat("3");
block4 = new CorsiQuadrat("4");
block5 = new CorsiQuadrat("5");
block6 = new CorsiQuadrat("6");
block7 = new CorsiQuadrat("7");
block8 = new CorsiQuadrat("8");
block9 = new CorsiQuadrat("9");
//Corsi-Blöcke dem Panel hinzufügen
this.add(block1);
this.add(block2);
this.add(block3);
this.add(block4);
this.add(block5);
this.add(block6);
this.add(block7);
this.add(block8);
this.add(block9);
//Größe und Position der Corsi-Blöcke auf dem Panel bestimmen
block1.setBounds(205,135,90,90);
block2.setBounds(365,80,90,90);
block3.setBounds(550,80,90,90);
block4.setBounds(730,170,90,90);
block5.setBounds(220,390,90,90);
block6.setBounds(340,285,90,90);
block7.setBounds(540,420,90,90);
block8.setBounds(540,245,90,90);
block9.setBounds(715,300,90,90);
//Action-Listener bei allen Blöcken registrieren. Bei einem Event schreiben diese
//in ein Array, welcher Button gedrückt wurde (das Array enthält am Ende die Sequenz
//wie sie vom Teilnehmer eingegeben wurde
block1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,1);
i++;
};
});
block2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,2);
i++;
};
});
block3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,3);
i++;
};
});
block4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,4);
i++;
};
});
block5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,5);
i++;
};
});
block6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,6);
i++;
};
});
block7.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,7);
i++;
};
});
block8.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,8);
i++;
};
});
block9.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg) {
eingabeSequenzVP.add(i,9);
i++;
};
});
}
//gibt die Sequenz die die VP eingegeben hat zurück
public ArrayList<Integer> gibEingabesequenzVP() {
return eingabeSequenzVP;
}
//setzt die eingabeSequenzVP zurück;
public void setzeZurueckEingabeSequenzVP(){
eingabeSequenzVP= new ArrayList<Integer>();
i=0;
}
}
Java:
import java.awt.Color;
import java.awt.event.MouseListener;
import javax.swing.JButton;
public class CorsiQuadrat extends JButton {
public CorsiQuadrat(){
this.setBackground(Color.BLUE);
}
//Quadrat gelb einfärben für eine Sekunde
public void aufblinken() throws InterruptedException {
this.setBackground(Color.YELLOW);
Thread.sleep(1000);
this.setBackground(Color.BLUE);
Thread.sleep(1000);
}
private MouseListener[] listener = null;
public CorsiQuadrat(String a){
super(a);
// this.setBackground(Color.BLUE);
this.setText(a);
}
@Override
public void setEnabled(boolean b) {
if (b){
setRolloverEnabled(true);
setFocusable(true);
if (listener != null){
for (MouseListener ml : listener){
addMouseListener(ml);
}
listener = null;
}
}else{
setRolloverEnabled(false);
setFocusable(false);
if (listener == null){
listener = getMouseListeners();
for (MouseListener ml : listener){
removeMouseListener(ml);
}
}
}
}
}