Botón volver al menú JAVA
greg6614
Mensajes publicados
629
Estado
Miembro
-
greg6614 Mensajes publicados 629 Estado Miembro -
greg6614 Mensajes publicados 629 Estado Miembro -
Bonjour,
je suis actuellement en TS SI spé ISN et donc je fais un petit prog JAVA pour convertir de decimal vers binaire ou hexa et vice versa, le seul soucis c'est que j'ai mis des boutons Menu permettant de revenir en arrière mais je ne sais pas comment revenir au début du code car si j'instancie ma méthode principale, il m'ouvre carrément une nouvelle fenêtre.
Voici un bout du code, si vous avez une idée je suis preneur ;)
Configuration: Windows 7 / Firefox 25.0
--
En espérant t'avoir aider
Greg
je suis actuellement en TS SI spé ISN et donc je fais un petit prog JAVA pour convertir de decimal vers binaire ou hexa et vice versa, le seul soucis c'est que j'ai mis des boutons Menu permettant de revenir en arrière mais je ne sais pas comment revenir au début du code car si j'instancie ma méthode principale, il m'ouvre carrément une nouvelle fenêtre.
Voici un bout du code, si vous avez une idée je suis preneur ;)
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Transtypage_Bin_Dec extends JPanel implements ActionListener{
//DECLARATION VARIABLES
private JButton BD = new JButton ("Bin / Dec");
private JButton DB = new JButton ("Dec / Bin");
private JButton BH = new JButton ("Bin / Hex");
private JButton HB = new JButton ("Hex / Bin");
private JButton HD = new JButton ("Hex / Dec");
private JButton DH = new JButton ("Dec / Hex");
private JButton OK1 = new JButton (" OK ");
private JButton OK2 = new JButton (" OK ");
private JButton OK3 = new JButton (" OK ");
private JButton OK4 = new JButton (" OK ");
private JButton OK5 = new JButton (" OK ");
private JButton OK6 = new JButton (" OK ");
private JButton Menu = new JButton (" Menu ");
private JLabel Texte = new JLabel(" Choisissez la conversion à faire ");
private JLabel convert = new JLabel("");
private JPanel Panel;
private JTextField number = new JTextField();
//CONSTRUCTEUR----------------------------------------------------------------------------------//
public Transtypage_Bin_Dec() {
//
//
Panel = new JPanel(); //
//
// Format des éléments du panneau : ecoute des boutons //
//
BD.addActionListener(this);
DB.addActionListener(this);
BH.addActionListener(this);
HB.addActionListener(this);
HD.addActionListener(this);
DH.addActionListener(this);
//
//
// Ajouter les éléments au panneau //
//
Panel.add(BD);
Panel.add(DB);
Panel.add(BH);
Panel.add(HB);
Panel.add(HD);
Panel.add(DH);
Panel.add(Texte); //
} //
//----------------------------------------------------------------------------------------------//
//METHODE POUR RECUPERER LE PANNEAU DE SAISIE--------//
//
public JPanel getPanneau(){ //
return Panel; //
} //
//----------------------------------------------//
//METHODE ECOUTE DU BOUTON OK-------------------------------------------------------------------------//
public void actionPerformed(ActionEvent evt) {
if(evt.getSource() == BD){
Panel.removeAll();
Panel.setBackground(Color.WHITE);
number.setPreferredSize(new Dimension(150, 30));
Panel.add(Texte);
Panel.add(number);
Panel.add(convert);
Texte.setText("Entrez votre nombre :");
convert.setText("Conversion Binaire vers Decimal");
Panel.add(OK1);
Panel.add(Menu);
OK1.addActionListener(this);
Menu.addActionListener(this); }
if(evt.getSource() == OK1) {
String NumberSaisie = number.getText();
Panel.removeAll();
Panel.setBackground(Color.WHITE);
Panel.updateUI();
Panel.add(Texte);
Panel.add(convert);
Texte.setText("Nombre binaire : "+NumberSaisie);
convert.setText("Nombre Decimal : "+NumberSaisie);
Panel.add(Menu);
Menu.addActionListener(this);}
if(evt.getSource() == Menu) {
}
if(evt.getSource() == DB){
Panel.removeAll();
Panel.setBackground(Color.WHITE);
number.setPreferredSize(new Dimension(150, 30));
Panel.add(Texte);
Panel.add(number);
Panel.add(convert);
Texte.setText("Entrez votre nombre :");
convert.setText("Conversion Decimal vers Binaire");
Panel.add(OK2);
Panel.add(Menu);
OK2.addActionListener(this);}
if(evt.getSource() == OK2) {
String NumberSaisie = number.getText();
Panel.removeAll();
Panel.setBackground(Color.WHITE);
Panel.updateUI();
Panel.add(Texte);
Panel.add(convert);
Texte.setText("Nombre Decimal : "+NumberSaisie);
convert.setText("Nombre Binaire : "+NumberSaisie);
Panel.add(Menu);}
if(evt.getSource() == BH){
Panel.removeAll();
Panel.setBackground(Color.WHITE);
number.setPreferredSize(new Dimension(150, 30));
Panel.add(Texte);
Panel.add(number);
Panel.add(convert);
Texte.setText("Entrez votre nombre :");
convert.setText("Conversion Binaire vers Hexadecimal");
Panel.add(OK3);
Panel.add(Menu);
OK3.addActionListener(this);}
if(evt.getSource() == OK3) {
String NumberSaisie = number.getText();
Panel.removeAll();
Panel.setBackground(Color.WHITE);
Panel.updateUI();
Panel.add(Texte);
Panel.add(convert);
Texte.setText("Nombre Binaire : "+NumberSaisie);
convert.setText("Nombre Hexadecimal : "+NumberSaisie);
Panel.add(Menu);}
if(evt.getSource() == HB){
Panel.removeAll();
Panel.setBackground(Color.WHITE);
number.setPreferredSize(new Dimension(150, 30));
Panel.add(Texte);
Panel.add(number);
Panel.add(convert);
Texte.setText("Entrez votre nombre :");
convert.setText("Conversion Hexadecimal vers Binaire");
Panel.add(OK4);
Panel.add(Menu);
OK4.addActionListener(this);}
if(evt.getSource() == OK4) {
String NumberSaisie = number.getText();
Panel.removeAll();
Panel.setBackground(Color.WHITE);
Panel.updateUI();
Panel.add(Texte);
Panel.add(convert);
Texte.setText("Nombre Hexadecimal : "+NumberSaisie);
convert.setText("Nombre Binaire : "+NumberSaisie);
Panel.add(Menu);}
if(evt.getSource() == HD){
Panel.removeAll();
Panel.setBackground(Color.WHITE);
number.setPreferredSize(new Dimension(150, 30));
Panel.add(Texte);
Panel.add(number);
Panel.add(convert);
Texte.setText("Entrez votre nombre :");
convert.setText("Conversion Hexadecimal vers Decimal");
Panel.add(OK5);
Panel.add(Menu);
OK5.addActionListener(this);}
if(evt.getSource() == OK5) {
String NumberSaisie = number.getText();
Panel.removeAll();
Panel.setBackground(Color.WHITE);
Panel.updateUI();
Panel.add(Texte);
Panel.add(convert);
Texte.setText("Nombre Hexadecimal : "+NumberSaisie);
convert.setText("Nombre Decimal : "+NumberSaisie);
Panel.add(Menu);}
if(evt.getSource() == DH){
Panel.removeAll();
Panel.setBackground(Color.WHITE);
number.setPreferredSize(new Dimension(150, 30));
Panel.add(Texte);
Panel.add(number);
Panel.add(convert);
Texte.setText("Entrez votre nombre :");
convert.setText("Conversion Decimal vers Hexadecimal");
Panel.add(OK6);
Panel.add(Menu);
OK6.addActionListener(this);}
if(evt.getSource() == OK6) {
String NumberSaisie = number.getText();
Panel.removeAll();
Panel.setBackground(Color.WHITE);
Panel.updateUI();
Panel.add(Texte);
Panel.add(convert);
Texte.setText("Nombre Decimal : "+NumberSaisie);
convert.setText("Nombre Hexadecimal : "+NumberSaisie);
Panel.add(Menu);}
}
}
Configuration: Windows 7 / Firefox 25.0
--
En espérant t'avoir aider
Greg
2 respuestas
¡Ay!
¿Has entendido bien los mecanismos de herencia?
Si extiendes JPanel, no tienes por qué manipular un objeto JPanel y hacer un get, debes manipular directamente this...
Además, hacer una clase Container cuyo Listener de sus Componentes sea ella misma no tiene sentido, es mejor asociar cada componente al Listener que le corresponde, no tener un Listener global grande.
Por último, y no menos importante, es mejor tener varios JPanels y cambiar de uno a otro en tu JFrame, que tener un único JPanel y borrar todo su contenido una y otra vez. Si tuvieras un JPanel para tu Menu, y un JPanel para cada una de tus conversiones, tu problema de volver al menú no sería un problema: simplemente tendrías que cambiar de JPanel.
--
La confianza no excluye el control
public class Transtypage_Bin_Dec extends JPanel implements ActionListener {
private JPanel Panel;
public Transtypage_Bin_Dec() {
Panel = new JPanel()
}
public JPanel getPanneau() {
return Panel;
}
} ¿Has entendido bien los mecanismos de herencia?
Si extiendes JPanel, no tienes por qué manipular un objeto JPanel y hacer un get, debes manipular directamente this...
Además, hacer una clase Container cuyo Listener de sus Componentes sea ella misma no tiene sentido, es mejor asociar cada componente al Listener que le corresponde, no tener un Listener global grande.
Por último, y no menos importante, es mejor tener varios JPanels y cambiar de uno a otro en tu JFrame, que tener un único JPanel y borrar todo su contenido una y otra vez. Si tuvieras un JPanel para tu Menu, y un JPanel para cada una de tus conversiones, tu problema de volver al menú no sería un problema: simplemente tendrías que cambiar de JPanel.
--
La confianza no excluye el control
Gracias por tu respuesta, pero empecé la programación en JAVA solo en septiembre, así que no entiendo todo y admito que tu solución me parece un poco complicada para mi nivel.
--
Con la esperanza de haber podido ayudarte
Greg
--
Con la esperanza de haber podido ayudarte
Greg
No encontré cómo editar mi publicación, pero bueno, indagué en la web y, de hecho, he decidido hacerlo así: crear un listener para mi botón Menú que haga un new Panel();, pero eso me abre una nueva ventana, así que para evitar tenerla quiero cerrar la otra antes, pero el método dispose() no funciona, no logro actuar sobre mi JFrame que está definida en la clase Panel.