Wątek przeniesiony 2014-02-26 14:45 z Java przez ŁF.

Zliczanie kliknięć na przyciski...

0

Witam! Mam taki problem pisze właśnie coś w rodzaju pianina które ma działać w taki sposób że klikam na 3 przyciski i one tak jakby się zaznaczają i wyświetla jaki to akord tylko na razie zatrzymałem się na tym że nie wiem jak zrobić owe zaznaczenie :) w sensie zmieniłem kolor po kliknięciu itp. ale teraz próbowałem zrobić licznik który jest zwiększany po każdym kliknięciu na przycisk i znalazłem rozwiązanie tego tyle że zlicza mi jedynie kliknięcia na jeden przycisk po kliknięciu na kolejny liczenie znów zaczyna się od zera, także wydaje mi się że to rozwiązanie jest nie trafione i trzeba to rozwiązać inaczej ma ktoś może jakiś pomysł jak to zrobić? :) Z góry dziękuje za odpowiedź i pozdrawiam :)

0

Po czym program ma poznać, że kilka ostatnio naciśniętych "klawiszy" stanowi akord, należy zatem wyświetlić jakoś akord i zacząć liczyć od nowa?

0

tak dokładnie tak należy zaznaczyć przyciski które mają stanowić akord program wyświetla jaki to akord i po kliknięciu na kolejny przycisk program zaczyna liczyć od nowa.
Tutaj kod tego co do tej pory napisałem...

 import java.awt.*;
import java.awt.event.*;


public class Pianino extends Frame implements WindowListener, ActionListener
{
	Button przycisk[] = new Button[13];
	Label napis;
	
	public Pianino()
	{
		addWindowListener(this);
		setSize(420,400);
		setTitle("Pianino");
		setResizable(false);
		setVisible(true);
		setLayout(null);
		
		przyciski();
	}
	
	public void przyciski()
	{
		napis = new Label("Akordy",Label.CENTER);
		napis.setBounds(10, 30, 400, 40);
		add(napis);
		
		przycisk[0] = new Button();
		przycisk[0].setBounds(30, 70, 40, 120);
		przycisk[0].setBackground(Color.BLACK);
		przycisk[0].addActionListener(this);
		przycisk[0].setActionCommand("1przycisk");
		add(przycisk[0]);
		
		przycisk[1] = new Button();
		przycisk[1].setBounds(80, 70, 40, 120);
		przycisk[1].setBackground(Color.BLACK);
		przycisk[1].addActionListener(this);
		przycisk[1].setActionCommand("2przycisk");
		add(przycisk[1]);
		
		przycisk[2] = new Button();
		przycisk[2].setBounds(180, 70, 40, 120);
		przycisk[2].setBackground(Color.BLACK);
		przycisk[2].addActionListener(this);
		przycisk[2].setActionCommand("3przycisk");
		add(przycisk[2]);
		
		przycisk[3] = new Button();
		przycisk[3].setBounds(230, 70, 40, 120);
		przycisk[3].setBackground(Color.BLACK);
		przycisk[3].addActionListener(this);
		przycisk[3].setActionCommand("4przycisk");
		add(przycisk[3]);
		
		przycisk[4] = new Button();
		przycisk[4].setBounds(280, 70, 40, 120);
		przycisk[4].setBackground(Color.BLACK);
		przycisk[4].addActionListener(this);
		przycisk[4].setActionCommand("5przycisk");
		add(przycisk[4]);
		
		przycisk[5] = new Button("C");
		przycisk[5].setBounds(10, 70, 50, 300);
		przycisk[5].addActionListener(this);
		przycisk[5].setActionCommand("Cprzycisk");
		add(przycisk[5]);
		
		przycisk[6] = new Button("D");
		przycisk[6].setBounds(60, 70, 50, 300);
		przycisk[6].addActionListener(this);
		przycisk[6].setActionCommand("Dprzycisk");
		add(przycisk[6]);
		
		przycisk[12] = new Button("E");
		przycisk[12].setBounds(110, 70, 50, 300);
		przycisk[12].addActionListener(this);
		przycisk[12].setActionCommand("Eprzycisk");
		add(przycisk[12]);
		
		przycisk[7] = new Button("F");
		przycisk[7].setBounds(160, 70, 50, 300);
		przycisk[7].addActionListener(this);
		przycisk[7].setActionCommand("Fprzycisk");
		add(przycisk[7]);
		
		przycisk[8] = new Button("G");
		przycisk[8].setBounds(210, 70, 50, 300);
		przycisk[8].addActionListener(this);
		przycisk[8].setActionCommand("Gprzycisk");
		add(przycisk[8]);
		
		przycisk[9] = new Button("A");
		przycisk[9].setBounds(260, 70, 50, 300);
		przycisk[9].addActionListener(this);
		przycisk[9].setActionCommand("Aprzycisk");
		add(przycisk[9]);
		
		przycisk[10] = new Button("H");
		przycisk[10].setBounds(310, 70, 50, 300);
		przycisk[10].addActionListener(this);
		przycisk[10].setActionCommand("Hprzycisk");
		add(przycisk[10]);
		
		przycisk[11] = new Button("C1");
		przycisk[11].setBounds(360, 70, 50, 300);
		przycisk[11].addActionListener(this);
		przycisk[11].setActionCommand("C1przycisk");
		add(przycisk[11]);
	}

	public static void main(String[] args) 
	{
		new Pianino();
	}
	
	public void windowClosing(WindowEvent e) 
	{
		System.exit(0);
		dispose();
	}
	
	public void windowClosed(WindowEvent e) {}
	public void windowOpened(WindowEvent e) {}
	public void windowIconified(WindowEvent e) {}
	public void windowDeiconified(WindowEvent e) {}
	public void windowActivated(WindowEvent e) {}
	public void windowDeactivated(WindowEvent e) {}

	@Override
	public void actionPerformed(ActionEvent e)
	{
		String tab[] = new String[13];
		tab[0]="1przycisk";
		tab[1]="2przycisk";
		tab[2]="3przycisk";
		tab[3]="4przycisk";
		tab[4]="5przycisk";
		tab[5]="Cprzycisk";
		tab[6]="Dprzycisk";
		tab[7]="Fprzycisk";
		tab[8]="Gprzycisk";
		tab[9]="Aprzycisk";
		tab[10]="Hprzycisk";
		tab[11]="C1przycisk";
		tab[12]="Eprzycisk";
		
		int licznik = 0;
		int licz[] = new int[13];
		String cmd = e.getActionCommand();
		
		
		
		for(int i=0; i < 13; i++)
		{
			if(cmd.equals(tab[i]))
			{
				przycisk[i].setBackground(Color.GRAY);
				licz[i] = 1+i;
				napis.setText(""+licz[i]);
			}
			
		}
		
	}

}
0

Nie odpowiedziałeś na pytanie: Co to jest akord?
Nie jestem muzykiem. Z artykułu w Wikipedii wynika, że akord składa się z co najmniej trzech dźwięków, jak rozpoznać po wciśnięciu kilku klawiszy, że akord się skończył?

0

chodzi tutaj wyłącznie o akordy trój dźwiękowe czyli po wciśnięciu 3 przycisku ma wyświetlić akord a jak się wciśnie 4 zaczyna liczyć od nowa

0

Naucz się korzystać z pętli i nie umieszczaj kodu po System.exit(), taki kod się nie wykona.

 import java.awt.*;
import java.awt.event.*;


public class Pianino extends Frame implements WindowListener, ActionListener
{
    Button przycisk[] = new Button[13];
    Label napis;
    String tekst = "";
    int licznik = 0;
    
    public Pianino()
    {
        addWindowListener(this);
        setSize(420,400);
        setTitle("Pianino");
        setResizable(false);
        setVisible(true);
        setLayout(null);
        
        przyciski();
    }
    
    public void przyciski()
    {
        napis = new Label("Akordy",Label.CENTER);
        napis.setBounds(10, 30, 400, 40);
        add(napis);
        
        przycisk[0] = new Button();
        przycisk[0].setBounds(30, 70, 40, 120);
        przycisk[0].setBackground(Color.BLACK);
        przycisk[0].addActionListener(this);
        przycisk[0].setActionCommand("1");
        add(przycisk[0]);
        
        przycisk[1] = new Button();
        przycisk[1].setBounds(80, 70, 40, 120);
        przycisk[1].setBackground(Color.BLACK);
        przycisk[1].addActionListener(this);
        przycisk[1].setActionCommand("2");
        add(przycisk[1]);
        
        przycisk[2] = new Button();
        przycisk[2].setBounds(180, 70, 40, 120);
        przycisk[2].setBackground(Color.BLACK);
        przycisk[2].addActionListener(this);
        przycisk[2].setActionCommand("3");
        add(przycisk[2]);
        
        przycisk[3] = new Button();
        przycisk[3].setBounds(230, 70, 40, 120);
        przycisk[3].setBackground(Color.BLACK);
        przycisk[3].addActionListener(this);
        przycisk[3].setActionCommand("4");
        add(przycisk[3]);
        
        przycisk[4] = new Button();
        przycisk[4].setBounds(280, 70, 40, 120);
        przycisk[4].setBackground(Color.BLACK);
        przycisk[4].addActionListener(this);
        przycisk[4].setActionCommand("5");
        add(przycisk[4]);
        
        przycisk[5] = new Button("C");
        przycisk[5].setBounds(10, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[5].addActionListener(this);
        //przycisk[5].setActionCommand("Cprzycisk");
        add(przycisk[5]);
        
        przycisk[6] = new Button("D");
        przycisk[6].setBounds(60, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[6].addActionListener(this);
        //przycisk[6].setActionCommand("Dprzycisk");
        add(przycisk[6]);
        
        przycisk[12] = new Button("E");
        przycisk[12].setBounds(110, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[12].addActionListener(this);
        //przycisk[12].setActionCommand("Eprzycisk");
        add(przycisk[12]);
        
        przycisk[7] = new Button("F");
        przycisk[7].setBounds(160, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[7].addActionListener(this);
        //przycisk[7].setActionCommand("Fprzycisk");
        add(przycisk[7]);
        
        przycisk[8] = new Button("G");
        przycisk[8].setBounds(210, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[8].addActionListener(this);
        //przycisk[8].setActionCommand("Gprzycisk");
        add(przycisk[8]);
        
        przycisk[9] = new Button("A");
        przycisk[9].setBounds(260, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[9].addActionListener(this);
        //przycisk[9].setActionCommand("Aprzycisk");
        add(przycisk[9]);
        
        przycisk[10] = new Button("H");
        przycisk[10].setBounds(310, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[10].addActionListener(this);
        //przycisk[10].setActionCommand("Hprzycisk");
        add(przycisk[10]);
        
        przycisk[11] = new Button("C1");
        przycisk[11].setBounds(360, 70, 50, 300);
        przycisk[4].setBackground(Color.LIGHT_GRAY);
        przycisk[11].addActionListener(this);
        //przycisk[11].setActionCommand("C1przycisk");
        add(przycisk[11]);
    }

    public static void main(String[] args) 
    {
        new Pianino();
    }
    
    public void windowClosing(WindowEvent e) 
    {
        System.exit(0);
    }
    
    public void windowClosed(WindowEvent e) {}
    public void windowOpened(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}

    @Override
    public void actionPerformed(ActionEvent e)
    {
        String cmd = e.getActionCommand();
        tekst+=" "+cmd;        
        licznik++;
        napis.setText(tekst);
        if(licznik == 3)
        {
            tekst = "";
            licznik = 0;
        }
        if(licznik == 1)
        {
            for(int i=0;i<przycisk.length;i++)
            if(i<5)
            {
               przycisk[i].setBackground(Color.BLACK);
            }
            else
            {
                przycisk[i].setBackground(Color.LIGHT_GRAY);
            }
        }
        Button src = (Button)(e.getSource());
        src.setBackground(Color.BLUE);      
    }

}
0

Bardzo dziękuję z pomoc i wskazówki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1