As funcionalidades de nossa interface gráfica, como anteriormente explicitadas, devem ser divididas em níveis de abstração para facilitar o entendimento e a programação. Para isso, vamos atacar o problema pelos seguintes pontos:
- JButtons (botões);
- JComboBox (lista de itens drop-down);
- Tratadores de evento: selecionar um item do JComboBox/clicar em um botão;
- Lógica de abrir arquivo de áudio (por URL ou especificar o caminho de um arquivo local C://).
Por enquanto, testamos separadamente para analisar o comportamento dos componentes Swing JButton e JComboBox. O código abaixo testa os 8 botões da aplicação que, no futuro vão aparecer na tela após ser selecionado um item da lista de afinações (JComboBox). Serão 8 botões diferentes para cada item dessa caixa selecionável, contendo um arquivo midi diferente.
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class ButtonFrame extends JFrame {
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
private JButton button5;
private JButton button6;
private JButton button7;
private JButton button8;
private ButtonHandler handler;
/*Em
Am
Dm
G
C
F
Bb
Bdim
*/
public void makeButtons(){ Container c = this.getContentPane(); setLayout(new FlowLayout()); button1 = new JButton("Em"); c.add(button1); button2 = new JButton("Am"); c.add(button2); button3 = new JButton("Dm"); c.add(button3); button4 = new JButton("G"); c.add(button4); button5 = new JButton("C"); c.add(button5); button6 = new JButton("F"); c.add(button6); button7 = new JButton("Bb"); c.add(button7); button8= new JButton("Bdim"); c.add(button8); }
public void tratarEventoBotao(ButtonHandler handler){
//cria novo ButtonHandler para tratamento de evento de botão
handler = new ButtonHandler();
button1.addActionListener(handler);
button2.addActionListener(handler);
button3.addActionListener(handler);
button4.addActionListener(handler);
button5.addActionListener(handler);
button6.addActionListener(handler);
button7.addActionListener(handler);
button8.addActionListener(handler);
}
public ButtonFrame(){
super("Testando JButtons"); makeButtons(); tratarEventoBotao(handler);
}
private class ButtonHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(ButtonFrame.this, String.format("Você clicou %s", event.getActionCommand()));
}
}
public static void main(String[] args) {
ButtonFrame b = new ButtonFrame();
b.setSize(250,140);
b.setVisible(true);
}
}
Nenhum comentário:
Postar um comentário