rayhana1
Messages postés11Date d'inscriptionlundi 19 mai 2008StatutMembreDernière intervention24 février 2010
-
8 juin 2008 à 22:12
rayhana1
Messages postés11Date d'inscriptionlundi 19 mai 2008StatutMembreDernière intervention24 février 2010
-
10 juin 2008 à 21:32
Bonsoir,
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
J’ai un problème de thread dans mon projet de fin d’étude, voici ce code :
public class Main extends JFrame{
static Main fenetre = new Main();
public Main() { //constructeur
super( "Ad-Hoc" );
}
public static void main( String args[] ) {
fenetre.resize(700,500);
fenetre.setJMenuBar(new barreMenu( ));
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
fenetre.setVisible( true );
}
}
class barreMenu extends JMenuBar {
private String[] fixeItems = new String[] {"Scénario1"};
public barreMenu( ) {
JMenu connexion = new JMenu("Connexion");
//les sous menus de "connexion"
JMenu protocole1 = new JMenu("Protocole ZHLS");
JMenu fixe = new JMenu("Fixe");
ActionListener P1scénario1= new ActionListener( ) {
public void actionPerformed(ActionEvent e) {
Main.fenetre.getContentPane().removeAll();
Main.fenetre.add(new pan1());
Main.fenetre.show();
class pan1 extends JComponent {
private static Color blueT = new Color(0,0,255,25);
private static Color redT = new Color(255,0,100,50);
private static Color blackT = new Color(0,0,0,100);
public pan1() {
setDoubleBuffered(true);
setOpaque(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
//dessiner tous les noeuds
for(i=0;i<20;i++){
if((i==5)||(i==12)||(i==13)){
int x= noeudInfo.Tab[i][0];
int y= noeudInfo.Tab[i][1];
int p= noeudInfo.Tab[i][2];
g.setColor(redT);
g.fillOval(x-p+noeud/2,y-p+noeud/2,p*2,p*2);
g.setColor(Color.black);
g.fillOval(x,y,noeud,noeud);
}
else{
int x= noeudInfo.Tab[i][0];
int y= noeudInfo.Tab[i][1];
int p= noeudInfo.Tab[i][2];
g.setColor(blueT);
g.fillOval(x-p+noeud/2,y-p+noeud/2,p*2,p*2);
g.setColor(Color.black);
g.fillOval(x,y,noeud,noeud);
}
}
//optimiser le nonbre de liens
//premier groupement
for(i=0;i<5;i++){
int x1= noeudInfo.Tab[5][0]+5;
int y1= noeudInfo.Tab[5][1]+5;
int p1= noeudInfo.Tab[5][2]+5;
int x2= noeudInfo.Tab[i][0]+5;
int y2= noeudInfo.Tab[i][1]+5;
int p2= noeudInfo.Tab[i][2]+5;
if((noeudInfo.distance(5,i)
class pan2 extends JComponent {
private static Color blueT = new Color(0,0,255,25);
private static Color redT = new Color(255,0,100,50);
private static Color blackT = new Color(0,0,0,100);
public pan2() {
setDoubleBuffered(true);
setOpaque(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int i,j;
//liens entre le premier et le deuxième groupe
for( i=0;i<6;i++){
for(j=6;j<13;j++){
int x1= noeudInfo.Tab[i][0]+5;
int y1= noeudInfo.Tab[i][1]+5;
int p1= noeudInfo.Tab[i][2]+5;
int x2= noeudInfo.Tab[j][0]+5;
int y2= noeudInfo.Tab[j][1]+5;
int p2= noeudInfo.Tab[j][2]+5;
if((noeudInfo.distance(i,j)
class noeudInfo extends JFrame implements ActionListener{
JTable table = new JTable(new CustomTableModel(data, columnNames));
c.add("Center", new JScrollPane(table));
int i=0;
JPanel p2 = new JPanel();
b = new JButton("OK");
p2.add(b);
c.add("South",p2);
//ajouter l'ecouteur d'evenement au boutton
b.addActionListener(this);
}
public static float distance(int n1,int n2){
int x1=Tab[n1][0],
x2=Tab[n2][0],
y1=Tab[n1][1],
y2=Tab[n2][1];
float dis=(float) Math.sqrt(Math.pow((x1-x2),2)+Math.pow((y1-y2),2));
return dis;
}
public static float distance(int x1,int y1,int i){
int x2=Tab[i][0],
y2=Tab[i][1];
float dis=(float) Math.sqrt(Math.pow((x1-x2),2)+Math.pow((y1-y2),2));
return dis;
}
public void actionPerformed(ActionEvent e) {
dispose();
}
}
Premièrement je veux afficher ‘pan1’ puis bloquer l’exécution puis afficher ‘pan2’ mais le problème est que elle est bloquée avant l’affichage du premier panneau puis il n’affiche que les contenants de ‘pan1’.
J’ai aussi un autre problème : comment accéder à un JTable (déjà remplie) pour utiliser le contenant d’un de ses cases ?