package luento23; import javax.swing.JPanel; import java.awt.FlowLayout; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; /** * Piano jota voi soittaa * @author vesal * @version 21.11.2010 */ public class PanelKokoPiano extends JPanel { private static final long serialVersionUID = 1L; private final PanelPiano panelPiano3 = new PanelPiano(); private final PanelPiano panelPiano4 = new PanelPiano(); private PanelPiano[] oktaavit = { panelPiano3,panelPiano4 }; private StringBuilder alhaalla = new StringBuilder(); /** * Create the frame. */ public PanelKokoPiano() { setBounds(100, 100, 963, 330); setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); panelPiano3.setOctave(3); add(panelPiano3); panelPiano4.setOctave(4); add(panelPiano4); addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { aloita(e.getKeyChar()); } @Override public void keyReleased(KeyEvent e) { lopeta(e.getKeyChar()); } }); panelPiano3.setLiitos("awsedftgyhuj"); panelPiano4.setLiitos("kolpöäå'"); } public boolean aloita(char c) { if ( alhaalla.indexOf(""+c) >= 0 ) return false; alhaalla.append(c); for ( PanelPiano panelPiano : oktaavit) if ( panelPiano.aloita(c) ) return true; return false; } public boolean lopeta(char c) { int i = alhaalla.indexOf(""+c); if ( i >=0 ) alhaalla.deleteCharAt(i); for ( PanelPiano panelPiano : oktaavit) if ( panelPiano.lopeta(c) ) return true; return false; } }