2011-06-06 4 views
1

Pour une raison quelconque, chaque fois que quelqu'un exécute ce programme sous Vista, il fonctionne parfaitement, mais dès que je le déplace sur un PC Windows 7, il s'arrête au milieu de l'Action Effectuée de ActionListener, ce qui signifie que je peux cliquer sur ne dira jamais la taille sélectionnée. Y at-il un moyen de résoudre ce problème?Pourquoi ce code fonctionne-t-il dans Vista mais pas dans 7?

import java.io.*; 
import java.util.*; 
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
public class SizerFrame extends JFrame { 
    ButtonGroup buttons = new ButtonGroup(); 
    JTextField width = new JTextField(2); 
    JTextField height = new JTextField(2); 
    double inchesPerTimeline = 2.1; 
    public SizerFrame() 
    { 
     super("Timeline Application"); 
     Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); 
     setBounds(screen.width/2-125,screen.height/2-90,250,180); 
     getContentPane().setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 
     int[] gridX = new int[]{0,0,0,0}; 
     int[] gridY = new int[]{0,1,2,3}; 
     int[] gridW = new int[]{1,1,2,5}; 
     String[] titles = new String[]{"6\"","9\"","10\"","Custom"}; 
     String[] actions = new String[]{"6","9","10","C"}; 
     for (int a = 0; a < 4; a++) 
     { 
      JRadioButton current = new JRadioButton(titles[a]); 
      current.setActionCommand(actions[a]); 
      c.gridx = gridX[a]; 
      c.gridy = gridY[a]; 
      c.gridwidth = gridW[a]; 
      buttons.add(current); 
      getContentPane().add(current,c); 
     } 
     c.gridwidth = 1; 
     String[] title = new String[]{"  ","Width","Height"}; 
     gridX = new int[]{9,10,12}; 
     for (int a = 0; a< 3; a++) 
     { 
      c.gridx = gridX[a]; 
      getContentPane().add(new JLabel(title[a]),c); 
     } 
     c.gridx = 11; 
     getContentPane().add(width,c); 
     c.gridx = 13; 
     getContentPane().add(height,c); 
     c.gridx = 11; 
     c.gridy = 0; 
     c.gridwidth = 2; 
     JButton button = new JButton("Done"); 
     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       ButtonModel x = buttons.getSelection(); 
       String size = "XXX"; 
       System.out.println("Getting screen resolution"); 
       int screenRes = Toolkit.getDefaultToolkit().getScreenResolution(); 
       System.out.println("Successfully got screen resolution"); 
       if (x!=null) 
        size = x.getActionCommand(); 
       try{ 
        TimeTable.width = new Integer(size)*screenRes; 
        TimeTable.height = (int)((TimeTable.titleCount+1)*inchesPerTimeline*screenRes); 
       } 
       catch(NumberFormatException ex) 
       { 
        try{ 
         TimeTable.width = (int)(new Double(width.getText().trim())*screenRes); 
         TimeTable.height = (int)(new Double(height.getText().trim())*screenRes); 
        } 
        catch (NumberFormatException except) 
        { 
         return; 
        } 
       } 
       TimeTable.ready = true; 
       System.out.println("Size selected"); 
       dispose(); 
      } 
     }); 
     getContentPane().add(button,c); 
     addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent winEvt){ 
       System.exit(0); 
      } 
     }); 
     setVisible(true); 
    } 
} 

explication concise: J'ai une macro qui court d'Excel dans Windows Vista et j'ai essayé de le distribuer à un ordinateur exécutant Windows 7. Lors de l'exécution du code n'a pas réussi à continuer à exécuter après ce point-à-dire qu'il ne a imprimé les mots "Taille sélectionnée". Le reste du programme introduit un fichier csv à partir d'un dossier C: \ Users \? \ AppData \ TimeLineMacroProgram et crée plus tard une image dans le même répertoire. Mais c'est la partie du code qui est actuellement cassée. Chaque fois que l'interface graphique apparaît, je sélectionne l'option pour 9 "et clique sur done qui devrait passer en 9 comme paramètre et ensuite imprimer" Size Selected "mais il ne se débarrasse pas de la fenêtre, merci de nous aider

+0

Je ne peux que soupçonner un bug dans le JDK - utilisez-vous exactement la même version JDK dans les deux? – Liv

+0

non considérant qu'il est exporté en tant que programme vers d'autres ordinateurs utilisant un fichier de classe, la seule chose comme celle en question serait le JRE –

+0

Est-ce que le programme est suspendu, se termine ou est défectueux? – Shaded

Répondre

0

Longshot deviner:

Il y a une sortie de votre écouteur d'action si les champs de texte de largeur et de hauteur n'ont pas de contenu: vous revenez après deux NumberFormatExceptions, ce qui empêche l'affichage de "Taille sélectionnée" et vous avez obtenu la sortie "Résolution d'écran obtenue avec succès" et puis il a semblé cesser de fonctionner, cela pourrait éventuellement être pourquoi.Mais si vous rencontrez cela, puis cliquez sur autre chose et puis fait, il serait la taille d'impression sélectionnée

+0

exactement mais après avoir cliqué, le cadre est éliminé –

+0

@ if_zero_equals_one il serait disposé si vous ne revenez pas de la méthode actionPerformed après deux NumberFormatExceptions. – Atreys

+0

le cadre est éliminé et rien d'autre ne se passe = / –

Questions connexes