[英]JButtons when pressed saved in array
我正在做我的學校項目。 我的志向是做一場鋼琴比賽。 該程序運行正常,但是遇到問題時我的工作停止了。 我想將通過推送特定JButton得到的整數放入數組中。 例如,如果我按下JButton 3,JButton 4和JButton 1,我將進入數組[3,4,1]。 請幫我。 最好的祝福。 這是我的代碼:
import javax.swing.*;
import javax.sound.sampled.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.Color;
class vse_v_enem extends JFrame implements ActionListener
{
public static void main(String [] arg){
new vse_v_enem();
}
public vse_v_enem(){
initSounds();
}
protected void initSounds(){
sounds();
zacetek();
}
public void sounds(){
for(int i=1;i<=13;i++)
try{
audioIn[i] = AudioSystem.getAudioInputStream(vse_v_enem.class.getResource("zvoki/"+i+".wav"));
//System.out.println("zvoki/"+i+".wav.wav");
} catch(javax.sound.sampled.UnsupportedAudioFileException e){
} catch(Exception e){
System.out.println("Hm.... something went wrong");
}
}
public void zacetek (){
JFrame okvir = new JFrame("Klaviaturska zabava");
okvir.setBounds(500,400,416,214);
JLayeredPane panel = new JLayeredPane();
okvir.add(panel);
//int f[] = igra();
/**naredi crne tipke*/
int crnih = 5;
int sirina = 30;
int visina = 113;
for(int i = 0; i<crnih;i++){
JButton b = new JButton(""+(i+1));
b.setFont(b.getFont().deriveFont((float)11));
b.setForeground(Color.WHITE);
b.setBackground(Color.BLACK);
b.setSize(sirina,visina);
b.setLocation(i*50 + (sirina*3)-5,0);
b.addActionListener(this);
panel.add(b,1,-1);
}
/** naredi bele tipke*/
int belih = 8;
int sirina1 = 50;
int visina1 = 176;
for (int i = 6; i<belih+6; i++){
JButton b = new JButton(""+i);
b.setBackground(Color.WHITE);
b.setLocation((i-6)*sirina1,0);
b.setSize(sirina1,visina1);
b.addActionListener(this);
panel.add(b,0,-1);
}
okvir.setVisible(true);
}
public void predvajajZvBesedilo(AudioInputStream audioIn){
sounds();
try {
clip = AudioSystem.getClip();
clip.open(audioIn);
} catch(Exception e) {};
clip.setFramePosition(0);
clip.start();
}
public void tabela(int tab){
}
public void actionPerformed(ActionEvent e){
JButton tempButton = (JButton)e.getSource();
System.out.print( tempButton.getText() + " " );
int clipNr = Integer.valueOf(tempButton.getText());
//tabela(tab[clipNr]);
predvajajZvBesedilo( audioIn[clipNr]);
}
public int[] igra(){
int t [] = {4,5,8,6};
System.out.print("[ ");
for(int i = 0; i < t.length; i++){
//t[i] = (int)(Math.random()*13+1);
System.out.print(t[i]+" ");
}
System.out.print("] ");
System.out.println();
System.out.println();
return t;
}
public void delay (int i){
try {
Thread.sleep(i*1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
private JFrame okvir = null;
private Clip clip = null;
int [] tab = new int [igra().length];
AudioInputStream audioIn[] = new AudioInputStream[14];
}
您需要將JButton
添加到JFrame
。 然后借助addActionListener
方法將ActionListener
添加到您的按鈕中。 在ActionListener
actionPerformed
方法中,您需要確定按下按鈕的方式,例如if(e.getSource() == button1) array[i] = 1;
其中e
是ActionEvent參數。 所有按鈕都使用一個監聽器,這就是您的框架。 我認為這對您有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.