Eis minha implementação inicial:
Classe principal (Jantar)
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.util.concurrent.Semaphore;
import javax.swing.*;
public class Jantar {
public static int maxComendo, comendo;
public static JLabel lblMaxn;
public static int nFil;
public static Semaphore mutex;
public static Filosofo[] filosofos;
public static void main(String[] args) {
maxComendo = comendo = 0;
nFil = Integer.parseInt(JOptionPane.showInputDialog(null,
"Quantos filósofos vão jantar?",
"Quantidade de filósofos",
JOptionPane.QUESTION_MESSAGE));
System.out.println("Quantidade de filósofos: " + nFil);
JFrame mesa = new JFrame("Mesa de jantar");
mutex = new Semaphore(1);
filosofos = new Filosofo[nFil];
JPanel info = new JPanel();
info.add(new JLabel("Filósofos: " + nFil + " "));
JLabel lblMaxtxt = new JLabel("Máximo Comendo: ");
lblMaxn = new JLabel("0");
info.add(lblMaxtxt);
info.add(lblMaxn);
mesa.add(info, BorderLayout.NORTH);
popularMesa(mesa,filosofos);
mesa.setVisible(true);
for (int i = 0; i < filosofos.length; i++) {
filosofos[i].start();
}
}
private static void popularMesa(JFrame mesa, Filosofo[] filosofos) {
JPanel painel = new JPanel();
painel.setLayout(
new GridLayout(
(int)Math.ceil(Math.sqrt(nFil)),
(int)Math.ceil(Math.sqrt(nFil))));
for (int i = 0; i < nFil; i++) {
System.out.println("Adicionando filósofo " + (i+1) + " à mesa.");
filosofos[i] = new Filosofo();
filosofos[i].setNumero(i);
painel.add(filosofos[i].label);
}
mesa.add(painel);
mesa.pack();
mesa.setLocationRelativeTo(null);
mesa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Classe Filósofo
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.util.concurrent.Semaphore;
import javax.swing.*;
public class Jantar {
public static int maxComendo, comendo;
public static JLabel lblMaxn;
public static int nFil;
public static Semaphore mutex;
public static Filosofo[] filosofos;
public static void main(String[] args) {
maxComendo = comendo = 0;
nFil = Integer.parseInt(JOptionPane.showInputDialog(null,
"Quantos filósofos vão jantar?",
"Quantidade de filósofos",
JOptionPane.QUESTION_MESSAGE));
System.out.println("Quantidade de filósofos: " + nFil);
JFrame mesa = new JFrame("Mesa de jantar");
mutex = new Semaphore(1);
filosofos = new Filosofo[nFil];
JPanel info = new JPanel();
info.add(new JLabel("Filósofos: " + nFil + " "));
JLabel lblMaxtxt = new JLabel("Máximo Comendo: ");
lblMaxn = new JLabel("0");
info.add(lblMaxtxt);
info.add(lblMaxn);
mesa.add(info, BorderLayout.NORTH);
popularMesa(mesa,filosofos);
mesa.setVisible(true);
for (int i = 0; i < filosofos.length; i++) {
filosofos[i].start();
}
}
private static void popularMesa(JFrame mesa, Filosofo[] filosofos) {
JPanel painel = new JPanel();
painel.setLayout(
new GridLayout(
(int)Math.ceil(Math.sqrt(nFil)),
(int)Math.ceil(Math.sqrt(nFil))));
for (int i = 0; i < nFil; i++) {
System.out.println("Adicionando filósofo " + (i+1) + " à mesa.");
filosofos[i] = new Filosofo();
filosofos[i].setNumero(i);
painel.add(filosofos[i].label);
}
mesa.add(painel);
mesa.pack();
mesa.setLocationRelativeTo(null);
mesa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Quer o programa pronto ou o código fonte?
ser possível sim e completo
ResponderExcluirDaniel, Boa noite!
ResponderExcluirTeria como passar o programa e o codigo pronto!
Estou com esse tema na faculdade!
Bet@
oi tem como me passar tbm to com problemas com meu codigo.
ResponderExcluirBom Dia
ResponderExcluirTeria como passar o programa e o codigo pronto!
Estou com esse tema na faculdade!
Meu e-mail é clair.luis@gmail.com
Obrigado
envia pra mim por favor. obrigado
ResponderExcluirandrenet64@outlook.com