import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
class CageProgramGUI {
public static void main(String[] args) {
JFrame frame = new JFrame("Programme Cage");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
frame.setLayout(null);
JLabel label = new JLabel("Entrez la longueur de la cage (en metres) :");
label.setBounds(20, 0, 250, 20);
JTextField textField = new JTextField();
textField.setBounds(20, 20, 100, 30);
JButton calculateButton = new JButton("Calculer");
calculateButton.setBounds(140, 20, 100, 30);
JTextArea resultArea = new JTextArea();
resultArea.setBounds(20, 70, 350, 80);
resultArea.setEditable(false);
frame.add(label);
frame.add(textField);
frame.add(calculateButton);
frame.add(resultArea);
calculateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
calculateResult(textField, resultArea);
}
});
textField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
calculateResult(textField, resultArea);
}
}
@Override
public void keyReleased(KeyEvent e) {
}
});
frame.setVisible(true);
}
private static void calculateResult(JTextField textField, JTextArea resultArea) {
double longueur_Cage = Double.parseDouble(textField.getText());
int nb_taule = (int) Math.ceil(longueur_Cage);
double depassement_cm = Math.round(((nb_taule - longueur_Cage) / 2) * 100);
double depassement_cm_abs = Math.abs(depassement_cm);
boolean chevauchement1 = (depassement_cm_abs > 15 && depassement_cm_abs < 33);
boolean chevauchement2 = (depassement_cm_abs >= 33);
StringBuilder result = new StringBuilder();
result.append("Résultats :\n");
result.append("Nombre de taules nécéssaires : ").append(nb_taule).append("\n");
if (depassement_cm <= 15) {
if (depassement_cm != 0) {
result.append("Depassement de chaque coté : ").append(depassement_cm_abs).append(" cm\n");
} else {
result.append("Pas besoin de depassement\n");
}
}
if (chevauchement1) {
double depassement_cm_H1 = Math.round((((nb_taule - 0.33) - longueur_Cage) / 2) * 100);
double depassement_cm_abs_H1 = Math.abs(depassement_cm_H1);
if (depassement_cm_abs_H1 != 0) {
result.append("Un chevauchement et un depassement de ").append(depassement_cm_abs_H1).append(" cm\n");
} else {
result.append("Un chevauchement et pas besoin de depassement\n");
}
}
if (chevauchement2) {
double depassement_cm_H2 = Math.round((((nb_taule - 0.66) - longueur_Cage) / 2) * 100);
double depassement_cm_abs_H2 = Math.abs(depassement_cm_H2);
if (depassement_cm_abs_H2 != 0) {
result.append("Deux chevauchements et un depassement de ").append(depassement_cm_abs_H2).append(" cm\n");
} else {
result.append("Deux chevauchements et pas besoin de depassement\n");
}
}
resultArea.setText(result.toString());
}
}