IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Stratégie optimum pour réarranger des JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut Stratégie optimum pour réarranger des JFrame
    Bonjour à tous,

    Je viens vers vous parce que j'ai un problème de taille!

    J'ai développé une calculatrice à option financière donc pour le moment, l'utilisateur rentre les caractéristiques de son option (maturité, prix du ss-jacent etc) puis il valide, via un action listener, cela instancie un objet de la classe CalculAction qui lui même crée un objet de ma classe FenetreResultat.

    Le code de FenetreResultat est ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    public class FenetreResultat extends JFrame {
     
    	//Maxi
    	int maxi;
    	int progres;
     
     
    	// Flux
    	ObjectInputStream in;
    	ObjectOutputStream out;
     
    	//Socket
    	Socket s;
     
    	// PrgressBar
    	JProgressBar jBar = new JProgressBar();
     
    	// Resultat
    	JLabel result;
     
    	//Thread barre
    	//Thread Threadbarre;
     
    	public FenetreResultat() {
    		// définir un titre
    		this.setTitle("Resultat");
    		// définir une taille
    		this.setSize(200, 280);
    		// donner un look
    		setDefaultLookAndFeelDecorated(true);
    		// définir sa position sur l'écran
    		this.setLocationRelativeTo(null);
    		// terminer le processus lorsqu'on clique sur fermer
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setContentPane(buildContentPane());
    		this.setVisible(true);
     
    		// Connection
    		int port = 18000;
    		String host = "localhost";
    		try {
    			// Coté client : création du socket connection
    			s = new Socket(host, port);
    			out = new ObjectOutputStream(s.getOutputStream());
    			out.flush();
    			in = new ObjectInputStream(s.getInputStream());
    		} catch (Exception e) {
    			System.out.println("Impossble de se connecter au serveur");
    			e.printStackTrace();
     
    		}
     
     
    		//Thread progress bar
    		Thread threadBarre = new Thread() {
    			public void run() {
    			  while(progres<maxi)
    			  {
    				  jBar.setValue(progres);
    			  }
    			}
    		};
    		threadBarre.start();
     
    	}
     
    	private JPanel buildContentPane() {
    		JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
    		panel.setBackground(Color.white);
     
    		result = new JLabel("Result not displayed");
    		result.setForeground(Color.blue);
     
    		panel.add(jBar);
    		panel.add(result);
    		return panel;
    	}
     
    	public JLabel getResultat() {
     
    		return result;
    	}
     
    	public JProgressBar getjBar() {
     
    		return jBar;
    	}
     
    	public void setMaxiBarre(int n) {
    		maxi = n;
    		jBar.setMinimum(0);
    		jBar.setMaximum(n);
    		jBar.setValue(0);
    	}
     
    }
    Lorsqu'il reclique, cela couvre une nouvelle FenetreResultat! Logique vu le code!

    Comment puis-je assez simplement transformer mon code pour qu'au second clic, la progressBar et le calcul soit affiché dans la même fenêtre et que cette dernière s'agrandisse au fur et à mesure?

    Merci de vos idées et de votre contribution!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Bon j'ai finalement opté pour transformer mes JFrame FenetreResultat en JPanel et les ajouter à une JFrame GrandeFenetreResultat!

    Cela fonctionne mais mes JPanel s'organise n'importe comment au fur et à mesure qu'ils sont crées! Ils s'ajoutent à droite de ceux existant donc je dois agrandir ma GrandeFenetreResultat à chaque fois...

    J'ai cherché à les organiser selon un BoxLayout mais ca bloque! Plus rien ne s'affiche et j'ai une erreur en rapport avec mes threads!

    Voici la partie du code modifié de calculAction lancé lorsque l'utilisateur clique sur le bouton "valider le calcul":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Méthode du CallPutFlag
    	public void actionPerformed(ActionEvent e) {
     
    		// Creation de la fenetre résultat
    		fenetreResultat = new FenetreResultat();
    		grandeFenetreResultat.add(fenetreResultat);
    		grandeFenetreResultat.setLayout(new BoxLayout(fenetreResultat, BoxLayout.PAGE_AXIS)); 
    		fenetreResultat.setMaxiBarre(Integer.parseInt(fenetre.getJtf9()
    				.getText()));
    Le code de ma GrandeFenetreResultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class GrandeFenetreResultat extends JFrame {
     
    	// constructor
    	public GrandeFenetreResultat() {
    		// définir un titre
    		this.setTitle("Resultat");
    		// définir une taille
    		this.setSize(200, 280);
    		// donner un look
    		setDefaultLookAndFeelDecorated(true);
    		// définir sa position sur l'écran
    		this.setLocationRelativeTo(null);
    		// terminer le processus lorsqu'on clique sur fermer
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setVisible(true);
    	}
     
    }
    et celui des JPanel FenetreResultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    public class FenetreResultat extends JPanel {
     
    	//Maxi
    	int maxi;
    	int progres;
     
     
    	// Flux
    	ObjectInputStream in;
    	ObjectOutputStream out;
     
    	//Socket
    	Socket s;
     
    	// PrgressBar
    	JProgressBar jBar = new JProgressBar();
     
    	// Resultat
    	JLabel result;
     
    	//Thread barre
    	//Thread Threadbarre;
     
    	public FenetreResultat() {
     
    		// définir une taille
    		this.setSize(200, 280);
     
    		this.setLayout(new FlowLayout());
    		this.setBackground(Color.white);
     
    		result = new JLabel("Result not displayed");
    		result.setForeground(Color.blue);
     
    		this.add(jBar);
    		this.add(result);
    		this.setVisible(true);
     
     
    		// Connection
    		int port = 18000;
    		String host = "localhost";
    		try {
    			// Coté client : création du socket connection
    			s = new Socket(host, port);
    			out = new ObjectOutputStream(s.getOutputStream());
    			out.flush();
    			in = new ObjectInputStream(s.getInputStream());
    		} catch (Exception e) {
    			System.out.println("Impossible de se connecter au serveur");
    			e.printStackTrace();
     
    		}
     
     
    		//Thread progress bar
    		Thread threadBarre = new Thread() {
    			public void run() {
    			  while(progres<maxi)
    			  {
    				  jBar.setValue(progres);
    			  }
    			}
    		};
    		threadBarre.start();
     
    	}

    Merci d'avance pour votre aide!

Discussions similaires

  1. quel langage pour créer des "applications" sur 1 s
    Par jaribu dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 30/07/2003, 14h06
  2. configurer sql pour envoyer des mails
    Par arwen dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/07/2003, 15h28
  3. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  4. Script pour envoyer des info a mysql
    Par rhum1 dans le forum Linux
    Réponses: 6
    Dernier message: 15/04/2003, 16h19
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo