Please help me

artistouclub Messages postés 4 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 19 décembre 2011 - 1 févr. 2011 à 12:01
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 3 févr. 2011 à 13:04
Bonjour a tous j ai realise une application selon le model MVC
dans la partie vue j ai mis un Menubar contenant des jmenu ensuite j ai lie chaque jmenu a sa propre classe(contenant une methode getpanel() ) pour l afficher ensuite dans la Fenetre a travers cette methode mon probleme c ke lors de l affichage de la classe CalculPanel j ai eu des problemes d affichage puisque j ai utilise des Jsplit est ce que kelkun peut m aider Svp

VOICI LES DEUX CLASSES

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import Model.Model;
import Observer.Observable;
import Control.Control;
import Model.ObjectData;
import Observer.Observer;

public class Fenetre extends JFrame implements Observer {
DefaultTableModel tmn =null;
PnlChart pnlChart=new PnlChart();
private Dimension size;
private Observable model;
private JPanel conteneur = new JPanel();

public Fenetre(Observable obs){

this.setLocationRelativeTo(null);
this.setTitle("AEBT SOFTWARE");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(850, 800);
this.setResizable(false);

this.model = obs;
this.model.addObserver(this);
this.size = new Dimension(this.getWidth(), this.getHeight());
this.conteneur.setPreferredSize(this.size );
this.setContentPane(this.conteneur);
createMenu();
this.conteneur.add(new AccueilPanel(this.size).getPanel());


}


private void createMenu()
{
ActionsColors actions = new ActionsColors();
JMenuBar mBar = new JMenuBar();
setJMenuBar( mBar );
JMenu file = new JMenu( "File" );
mBar.add( file );
JMenuItem New = new JMenuItem( "New" );
New.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
conteneur.removeAll();
CalculPanel gp = new CalculPanel(size, model);
model.addObserver(gp);
conteneur.add(gp.getPanel(), BorderLayout.CENTER);
conteneur.revalidate();
initModel();
}
});
file.add( New );
JMenuItem save = new JMenuItem( "Save" );
file.add( save );
JMenuItem print = new JMenuItem( "Print" );
file.add( print );
JMenuItem exit = new JMenuItem( "Exit" );
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
file.add( exit );

// creation des chex box
JMenu jm = new JMenu( "Options" );
mBar.add( jm );
JCheckBoxMenuItem chkItm = new JCheckBoxMenuItem( "Coords sur la souris" );
chkItm.setActionCommand( "onMouse" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isBubleOnMouse() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Affiche les coords" );
chkItm.setActionCommand( "coords" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isUseBuble() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Affiche les Points" );
chkItm.setActionCommand( "node" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isShowNode() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Affiche la croix" );
chkItm.setActionCommand( "cross" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isUseMouseCross() );
jm.add( chkItm );
chkItm = new JCheckBoxMenuItem( "Points sur courbe" );
chkItm.setActionCommand( "onLine" );
chkItm.addActionListener( actions );
chkItm.setSelected( pnlChart.isNodeOnLine() );
jm.add( chkItm );
// creation des menu items couleur

jm = new JMenu( "Couleurs" );
mBar.add( jm );
JMenuItem mit = new JMenuItem( "Courbe" );
mit.setActionCommand( "courbe" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Coords" );
mit.setActionCommand( "coords" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Points" );
mit.setActionCommand( "node" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Axes" );
mit.setActionCommand( "axes" );
mit.addActionListener( actions );
jm.add( mit );
mit = new JMenuItem( "Croix" );
mit.setActionCommand( "cross" );
mit.addActionListener( actions );
jm.add( mit );

JMenu help = new JMenu( "Help" );
mBar.add( help );
JMenuItem aide = new JMenuItem( "Help ??" );
aide.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ImageIcon img = new ImageIcon("Picture/Aebt.PNG");

JOptionPane.showMessageDialog(null,
"Créateur: Alaeddine Boubaker.\nEncadreur:Mister David Flinspach (Aebt)" +
".\nLicense: Freeware.\nCopyright: ala.boubaker@gmail.com",
"Information", JOptionPane.NO_OPTION,img);
}
});
help.add( aide );
JMenuItem about = new JMenuItem( "About" );
about.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{


JOptionPane.showMessageDialog(null,
"Créateur: Alaeddine Boubaker.\nEncadreur:Mister David Flinspach (Aebt)" +
".\nLicense: Freeware.\nCopyright: ala.boubaker@gmail.com",
"Information", JOptionPane.NO_OPTION);
}
});
help.add( about );

}
class ActionsColors implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
String action = e.getActionCommand();
if ( action.equals( "courbe" ) )
pnlChart.setColorLine( getColor( "de la courbe. ", pnlChart.getColorLine() ) );
else if ( action.equals( "coords" ) )
pnlChart.setColorText( getColor( "du text. ", pnlChart.getColorText() ) );
else if ( action.equals( "node" ) )
pnlChart.setColorNode( getColor( "des points. ", pnlChart.getColorNode() ) );
else if ( action.equals( "axes" ) )
pnlChart.setColorAxes( getColor( "des axes. ", pnlChart.getColorAxes() ) );
else if ( action.equals( "cross" ) )
pnlChart.setColorCross( getColor( "de la croix. ", pnlChart.getColorCross() ) );

pnlChart.fireTriggerDraw();
pnlChart.repaint();
}
}

private Color getColor( String titre, Color col )
{
return JColorChooser.showDialog( this, "Choix de la couleur " + titre, col );
}

class ActionsFlags implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
String action = e.getActionCommand();
JCheckBoxMenuItem source = (JCheckBoxMenuItem)e.getSource();
if ( action.equals( "node" ) )
pnlChart.setShowNode( source.isSelected() );
else if ( action.equals( "onMouse" ) )
pnlChart.setBubleOnMouse( source.isSelected() );
else if ( action.equals( "coords" ) )
pnlChart.setUseBuble( source.isSelected() );
else if ( action.equals( "cross" ) )
pnlChart.setUseMouseCross( source.isSelected() );
else if ( action.equals( "onLine" ) )
pnlChart.setNodeOnLine( source.isSelected() );
pnlChart.fireTriggerDraw();
pnlChart.repaint();
}
}

@Override
public void update(String λsmax, String qsmax, String qamax, String qbmax,
ArrayList<ObjectData> list, int i) {
// TODO Auto-generated method stub

}


@Override
public void updateThrb(String valueOf) {
// TODO Auto-generated method stub

}


@Override
public void updateThra(String valueOf) {
// TODO Auto-generated method stub

}
private void initModel(){
this.model = new Model();
this.model.addObserver(this);
}

}
la 2eme classe

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import Control.Control;
import Model.Model;
import Model.ObjectData;
import Observer.Observable;
import Observer.Observer;

public class CalculPanel extends ZContainer implements Observer{
private Dimension dimension = new Dimension();
private Control control;
DefaultTableModel tmn =null;
PnlChart pnlChart=new PnlChart();

//On déclare notre objet JTextPane
private JTextArea textPane = new JTextArea();
//L'objet qui va gérer le scroll
//En lui passant un objet JComponent dans le constructeur
private JScrollPane scroll = new JScrollPane(textPane);

//Vous êtes habitués à cette classe, maintenant... ;)
//On déclare notre objet JSplitPane
private JSplitPane split, split2, split3;
private JPanel pan,pan2,pan3,pan4;

private JTextField λs,λa,λb,DTA,DTB,THRS,THRA,THRB,QA,QB,QMAX,λmax;
private JLabel ALabel, BLabel, DTALabel, DTBLabel,thraLabel,thrbLabel
,thrsLabel,λsLabel, portlabel, syslabel,QaLabel,QbLabel,TestLabel,QmaxLabel,λmaxLabel;
private JComboBox port;
private JCheckBox sys;



public CalculPanel(Dimension dim, Observable mod) {
super(dim);
this.control = new Control(mod);
initPanel();
}

protected void initPanel() {
//On crée deux conteneurs de couleurs différentes
pan = new JPanel();

pan2 = new JPanel();

pan3 = new JPanel();

pan4 = new JPanel();


//λ
JPanel panλ = new JPanel();
panλ.setBackground(Color.white);
panλ.setPreferredSize(new Dimension(400, 70));
panλ.setBorder(BorderFactory.createTitledBorder("λ value"));
λa = new JTextField();
λa.setPreferredSize(new Dimension(100, 25));
ALabel = new JLabel("λa [1/h]");
λb = new JTextField();
λb.setPreferredSize(new Dimension(100, 25));
BLabel = new JLabel("λb [1/h]");
panλ.add(ALabel);
panλ.add(λa);
panλ.add(BLabel);
panλ.add(λb);
pan.add(panλ);

//DT
JPanel pandt = new JPanel();
pandt.setBackground(Color.white);
pandt.setPreferredSize(new Dimension(400, 70));
pandt.setBorder(BorderFactory.createTitledBorder(" DT value"));
DTA = new JTextField();
DTA.setPreferredSize(new Dimension(100, 25));
DTALabel= new JLabel("DTA [h]");
DTB = new JTextField();
DTB.setPreferredSize(new Dimension(100, 25));
DTBLabel = new JLabel("DTB [h]");
pandt.add(DTALabel);
pandt.add(DTA);
pandt.add(DTBLabel);
pandt.add(DTB);
pan.add(pandt);



//PORT
JPanel panport = new JPanel();
panport.setBackground(Color.white);
panport.setPreferredSize(new Dimension(400, 70));
panport.setBorder(BorderFactory.createTitledBorder("Port"));
THRS = new JTextField();
THRS.setPreferredSize(new Dimension(100, 25));
thrsLabel= new JLabel("THRS [1/h]");
port= new JComboBox();
port.addItem("AND");
port.addItem("OR");
portlabel=new JLabel("Port");
panport.add(portlabel);
panport.add(port);
panport.add(thrsLabel);
panport.add(THRS);
pan.add(panport);

//THR et λ
JPanel panThλ4 = new JPanel();
panThλ4.setBackground(Color.white);
panThλ4.setPreferredSize(new Dimension(400, 70));
panThλ4.setBorder(BorderFactory.createTitledBorder(" λS"));
λs = new JTextField();
λs.setPreferredSize(new Dimension(100, 25));
λsLabel = new JLabel("λs(max)");
QMAX = new JTextField();
QMAX.setPreferredSize(new Dimension(100, 25));
QmaxLabel= new JLabel("QMAX(S) [1]");
panThλ4.add(λsLabel);
panThλ4.add(λs);
panThλ4.add(QmaxLabel);
panThλ4.add(QMAX);
pan4.add(panThλ4);
//Q
JPanel panQ = new JPanel();
panQ.setBackground(Color.white);
panQ.setPreferredSize(new Dimension(400, 80));
panQ.setBorder(BorderFactory.createTitledBorder(" QMAX values"));
QA = new JTextField();
QA.setPreferredSize(new Dimension(100, 25));
QaLabel= new JLabel("QMAX(A) [1]");
QB = new JTextField();
QB.setPreferredSize(new Dimension(100, 25));
QbLabel = new JLabel("QMAX(B) [1]");
panQ.add(QaLabel);
panQ.add(QA);
panQ.add(QbLabel);
panQ.add(QB);
pan4.add(panQ);
//THR
JPanel panThr = new JPanel();
panThr.setBackground(Color.white);
panThr.setPreferredSize(new Dimension(400, 70));
panThr.setBorder(BorderFactory.createTitledBorder(" THR values"));
THRA = new JTextField();
THRA.setPreferredSize(new Dimension(100, 25));
thraLabel= new JLabel("THRA [1/h]");
THRB = new JTextField();
THRB.setPreferredSize(new Dimension(100, 25));
thrbLabel = new JLabel("THRB [1/h]");
panThr.add(thraLabel);
panThr.add(THRA);
panThr.add(thrbLabel);
panThr.add(THRB);
pan4.add(panThr);



// controlPan1
JPanel controlPan1 = new JPanel();
JButton calculBouton = new JButton("calcul λmax ");
calculBouton.addActionListener(new CalculListener());
JButton ThraBouton = new JButton("calcul THRA");
ThraBouton.addActionListener(new ThraListener ());
JButton ThrbBouton = new JButton("calcul THRB");
ThrbBouton.addActionListener(new ThrbListener ());
controlPan1.add(calculBouton);
controlPan1.add(ThraBouton);
controlPan1.add(ThrbBouton);
pan.add(controlPan1);


//On construit enfin notre séparateur
split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pan, pan4);
//On place le séparateur
split.setDividerLocation(400);
split2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pan3, pan2);
//On place le séparateur
split2.setDividerLocation(400);
//On passe les deux précédents JSplitPane à celui-ci
split3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, split, split2);
//On place le séparateur
split3.setDividerLocation(270);

//On le passe ensuite au contentPane de notre objet Fenetre
//placé au centre pour qu'il utilise tout l'espace disponible
this.panel.add(split3,BorderLayout.CENTER);

}
public JSplitPane getSplit3() {
return split3;
}
class CalculListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(λa.getText()!=""&&λb.getText()!=""&&DTA.getText()!=""&&DTB.getText()!="")
control.control1(λa.getText(),λb.getText(),DTA.getText(),DTB.getText());
else
{
JOptionPane.showMessageDialog(null, "please check your input Value ", "Information", JOptionPane.NO_OPTION);
}

}
}
class ThraListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(λb.getText()!=""&&DTA.getText()!=""&&DTB.getText()!=""&&THRS.getText()!="")
control.control3(λb.getText(),DTA.getText(),DTB.getText(),THRS.getText());
else
{

JOptionPane.showMessageDialog(null, "please check your input Value ", "Information", JOptionPane.NO_OPTION);
}

}

}
class ThrbListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(λa.getText()!=""&&DTA.getText()!=""&&DTB.getText()!=""&&THRS.getText()!="")
control.control2(λa.getText(),DTA.getText(),DTB.getText(),THRS.getText());
else
{
JOptionPane.showMessageDialog(null, "please check your input Value ", "Information", JOptionPane.NO_OPTION);
}

}

}

public void update(String λsmax, String qsmax, String qamax, String qbmax,ArrayList <ObjectData> list,int l)
{
// TODO Auto-generated method stub

λs.setText(λsmax);
QMAX.setText(qsmax);
QA.setText(qamax);
QB.setText(qbmax);
// Jtable
JScrollPane sclp =new JScrollPane();
sclp.setPreferredSize(new Dimension(400,470));
JTable table=new JTable();
tmn=new DefaultTableModel();
table.setModel(tmn);
tmn.addColumn("T");
tmn.addColumn("QA");
tmn.addColumn("QB");
tmn.addColumn("QS");
tmn.addColumn("λS");
for(ObjectData com :list)
{
Object[] vals={new Double(com.getT()),new Double(com.getQa()),new Double(com.getQb()),new Double(com.getQs()),new Double(com.getΛs())
};
tmn.addRow(vals);
}
sclp.getViewport().add(table);
pan3.add(sclp);
pan3.revalidate();
pnlChart = new PnlChart();
pnlChart.setTable(table);
pnlChart.setPreferredSize(new Dimension(400,470));
pan2.add(pnlChart);
pan2.revalidate();


}



@Override
public void updateThrb(String Qb) {
// TODO Auto-generated method stub
THRB.setText(Qb);
}
public void updateThra(String Qa) {
// TODO Auto-generated method stub
THRA.setText(Qa);
}

}

2 réponses

artistouclub Messages postés 4 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 19 décembre 2011
1 févr. 2011 à 12:50
voici la partie de code la plus mechante
//On construit enfin notre séparateur
split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pan, pan4);
//On place le séparateur
split.setDividerLocation(400);
split2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pan3, pan2);
//On place le séparateur
split2.setDividerLocation(400);
//On passe les deux précédents JSplitPane à celui-ci
split3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, split, split2);
//On place le séparateur
split3.setDividerLocation(270);

//On le passe ensuite au contentPane de notre objet Fenetre
//placé au centre pour qu'il utilise tout l'espace disponible
this.panel.add(split3,BorderLayout.CENTER);

JMenuItem New = new JMenuItem( "New" );
New.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
conteneur.removeAll();
CalculPanel gp = new CalculPanel(size, model);
model.addObserver(gp);
conteneur.add(gp.getPanel(), BorderLayout.CENTER);
conteneur.revalidate();
initModel();
}
});
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
3 févr. 2011 à 13:04
Salut,

Je n'ai pas regarder le code du premier poste (pique trop les yeux) mais en fonction du 2ieme je me pose la question suivante :
Au lieu de supprimer les éléments de ton contentpane et en mettre des nouveaux, etc... pourquoi tu n'utiliserais par un CardLayout sur ce dernier et ensuite tu joues seulement sur qui tu veux afficher en fonction du bouton qui est cliqué ?




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Rejoignez-nous