Il codice della GUI va tutto scritto di propria mano...
Per quanto riguarda febbraio di solito l'impostazione delle GUI del produttore consumatore è questa: hai due classi, una GUIConsumatore e una GUIProduttore, la prima ti permette di prelevare dal buffer quindi, in questo caso, avrà un campo che ti permette di selezionare il tipo di prestazione, un bottone per il prelievo e un campo con i dati prelevati , la seconda di inserire nel buffer quindi, in questo caso, avrà i campi cognome, codice fiscale e tipo di prestazione e un bottone per l'inserimento. Ovviamente ai bottoni di entrambe le GUI devi applicare dei Listener per realizzare le suddette azioni.
Ad esempio io, quando a mio tempo mi sono esercitata sulla stessa prova, ho scritto queste due classi:
[codice-java:39szq58o]import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class GUIConsumatore extends JFrame{
private static final long serialVersionUID = -5730428364786637650L;
private Buffer b;
private JTextField prestazione;
private JButton prossimo;
private JTextArea info;
public GUIConsumatore(Buffer
{
super();
this.b = b;
prestazione = new JTextField();
prossimo = new JButton("Preleva prossimo");
info = new JTextArea();
initGUI();
}
private void initGUI() {
this.setLocation(200, 200);
this.setSize(250, 300);
this.setResizable(false);
this.setLayout(new GridLayout(3, 1));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
{
prestazione.setBorder(BorderFactory
.createTitledBorder("Prestazione [0," + (b.getNumeroCode()-1) + "]"));
this.add(prestazione);
}
{
this.add(prossimo);
prossimo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int prest = Integer.parseInt(prestazione.getText());
Utente u;
if(prest < 0 || prest > b.getNumeroCode()-1)
JOptionPane.showMessageDialog(null, "Numero prestazione errato", "Errore", JOptionPane.ERROR_MESSAGE);
else{
Consumatore c = new Consumatore(b, prest);
c.start();
try {
c.join();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
u = c.getU();
if(u!=null)
info.setText(u.toString());
else
info.setText("Nessun utente da servire");
}
}
});
}
{
info.setBorder(BorderFactory
.createTitledBorder("Dati utente da servire"));
this.add(info);
}
}
}[/codice-java]
[codice-java:39szq58o]import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class GUIProduttore extends JFrame {
private static final long serialVersionUID = 5624803550661566167L;
private JTextField cognome, fiscale, prestazione;
private JButton inserisci;
private Buffer b;
public GUIProduttore(Buffer
{
super();
this.b = b;
cognome = new JTextField();
fiscale = new JTextField();
prestazione = new JTextField();
inserisci = new JButton("Inserisci");
initGUI();
}
private void initGUI() {
this.setLocation(600,200);
this.setSize(250, 300);
this.setResizable(false);
this.setLayout(new GridLayout(4, 1));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
{
cognome.setBorder(BorderFactory.createTitledBorder("Cognome"));
this.add(cognome);
}
{
fiscale.setBorder(BorderFactory
.createTitledBorder("Codice fiscale"));
this.add(fiscale);
}
{
prestazione.setBorder(BorderFactory
.createTitledBorder("Prestazione [0," + (b.getNumeroCode()-1) + "]"));
this.add(prestazione);
}
{
this.add(inserisci);
inserisci.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String cog = cognome.getText();
String fis = fiscale.getText();
int prest = Integer.parseInt(prestazione.getText());
if(cog.length()==0)
JOptionPane.showMessageDialog(null, "Inserire il congnome", "Errore", JOptionPane.ERROR_MESSAGE);
else if(fis.length() == 0)
JOptionPane.showMessageDialog(null, "Inserire il codice fiscale", "Errore", JOptionPane.ERROR_MESSAGE);
else if(prest < 0 || prest > b.getNumeroCode()-1)
JOptionPane.showMessageDialog(null, "Numero prestazione errato", "Errore", JOptionPane.ERROR_MESSAGE);
else{
Produttore p = new Produttore(b, prest, new Utente(cog, fis));
p.start();
cognome.setText("");
fiscale.setText("");
prestazione.setText("");
}
}
});
}
}
}[/codice-java]
Ma puoi scrivere anche qualcosa di più semplice...