2017-08-28 2 views
3

Quiconque est familier avec java Gui - swing package ... et sait comment créer plusieurs objets swing comme "jlabels et jtextfields" dans une boucle de sorte que vous n'avez pas à redondance chaque séparément? ...N'IMPORTE QUI???Créer plusieurs Jlabels et JTextFields de manière moins redondante?

Par exemple - je dois créer 60 et 11 JLabels Zones de texte, etc Je veux (si possible) ne pas avoir à créer chacun d'eux séparément comme si

JLabel jlblName = new JLabel("first one"); 
JLabel jlblName = new JLabel("first two"); 
JLabel jlblName = new JLabel("first three"); 
//etc... 

Si possible, je voudrais aussi Trouver un moyen de définir les limites et ajouter les étiquettes au panneau d'une manière plus courte aussi.

J'ai essayé différentes manières d'y parvenir - en utilisant des tableaux et en créant des méthodes get et toujours pas de chance .___.

ME S'IL VOUS PLAÎT AIDER SI VOUS

Voici un exemple de ce que je l'ai écrit à ce jour ... Cependant, même si cela n'a pas fonctionné, il ne semble pas que, pour des raisons pratiques serval. .. aussi je ne sais pas toujours pourquoi cela ne fonctionne pas.

public class prospectVer2 
{ 
private static int l = 59; //, t = 20, c=11; 

public static String getInfo(int b) 
{ 
int a=b; 
String [] lah = new String [prospectVer2.l]; 
lah [0]= "a"; 
lah [1]= "b"; 
lah [2]= "c"; 
lah [3]= "d"; 
lah [4]= "e"; 
lah [5]= "f"; 
lah [6]= "g"; 
lah [7]= "e"; 
lah [8]= "f"; 
lah [9]= "g"; 
lah [10]= "h"; 
lah [11]= "i"; 
lah [12]= "j"; 
lah [13]= "k"; 
lah [14]= "l"; 
lah [15]= "m"; 
lah [16]= "n"; 
lah [17]= "o"; 
lah [18]= "p"; 
lah [19]= "q"; 
lah [21]= "r"; 
lah [22]= "s"; 
lah [23]= "t"; 
lah [24]= "u"; 
lah [25]= "v"; 
lah [26]= "w"; 
lah [27]= "x"; 
lah [28]= "y"; 
lah [29]= "z"; 
lah [30]= "aa"; 
lah [31]= "bb"; 
lah [32]= "cc "; 
lah [33]= " dd"; 
lah [34]= " ee"; 
lah [35]= " ff "; 
lah [36]= " gg "; 
lah [37]= " hh "; 
lah [38]= " ii "; 
lah [39]= "jj"; 
lah [40]= "kk"; 
lah [41]= "ll"; 
lah [42]= "mm"; 
lah [43]= "nn"; 
lah [44]= "oo"; 
lah [45]= "pp"; 
lah [46]= "qq"; 
lah [47]= "rr"; 
lah [48]= "ss"; 
lah [49]= "tt"; 
lah [50]= "uu"; 
lah [51]= "vv"; 
lah [52]= "ww"; 
lah [53]= "xx"; 
lah [54]= "yy"; 
lah [55]= "zz"; 
lah [55]= "aaa"; 
lah [56]= "bbb"; 
lah [57]= "ccc"; 
lah [58]= "ddd"; 
lah [59]= "eee"; 
String infos= lah[a]; 
return infos; 
} 

public static void main(String[] args) 
{ 
    // Declare variables - arrays 

    // Create Frame and Panel - set size - 
    JFrame frame = new JFrame("Prospect Assignment"); 
    frame.setSize(700, 900); 
    JPanel mypanel = new JPanel(); 

    JLabel[] labels = new JLabel[prospectVer2.l]; 

    // Create labels (60) - for loop - 
    for (int i=0; i<labels.length; i++) 
    { 
     labels[i] = new JLabel(prospectVer2.getInfo(i)); 
     mypanel.add(labels[i]); 
     labels[i].setBounds(i*10+245,i*10+210,120,20); 
    } 

// extra functions for gui 
    frame.add(mypanel); 
    mypanel.setLayout(null); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

BTW je dois reproduire ce site en utilisant Javas swing package https://cunycitytech.askadmissions.net/emtinterestpage.aspx?ip=prospect MERCI DE VOTRE CONFIANCE!

Répondre

4

La question sera évident si vous essayez de commencer votre code:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 59 
    at prospectVer2.getInfo(prospectVer2.java:70) 
    at prospectVer2.main(prospectVer2.java:87) 

Dans votre code, vous avez private static int l = 59; //, t = 20, c=11; et l est utilisé pour spécifier tableau de longueur. Dans java tableau commence à partir de 0 index donc cela signifie que le dernier index de tableau accessible dans votre cas devrait être 58, mais vous essayez lah[59] = "eee";. C'est la raison pour laquelle votre code ne fonctionne pas.

Vous pouvez utiliser l'une des solutions suivantes:

  • augmentation l: private static int l = 60;;
  • ou de supprimer l'accès à l'index 59 (lah[59] = "eee";).
3

Pour répondre à votre question

comment créer plusieurs objets swing comme "JLabels et jtextfields"

Vous pouvez utiliser des méthodes simples comme:

JLabel getLabel(String labelText) { 

    JLabel label = new JLabel(labelText); 
    //do additional needed setting like font, alignment etc. 
    return label; 
}