2016-03-23 4 views
2

J'ai un Jframe que l'utilisateur entre de nouvelles informations via un Joptionpane, il est ajouté à un tableau qui est ensuite ajouté et affiché à un panneau de contenu .. le cycle se répète jusqu'à l'utilisateur entre "STOP". Actuellement, le programme sort le nouveau tableau sous l'ancien. Comment effacer l'ancien tableau dans le volet de contenu et afficher uniquement les nouvelles valeurs?Comment réinitialiser ou actualiser Jframe avec de nouvelles valeurs

import java.awt.*; 
import java.util.LinkedList; 
import java.util.List; 
public class Project1GUI { 
    static JFrame Frame; 
    static TextArea unsorted_words, sorted_words, linked_words; 
    public Project1GUI(String title){ 
      //All this does is make an empty GUI FRAME. 
        Frame=new JFrame();//i made a new variable from the JFrame class 
        Frame.setSize(400,400);//Used the Variable from JFrame and used some of it functions. This function sets the hieght and width of the Frame 
        Frame.setLocation(200,200);//This sets where the Empty Frame should be 
        Frame.setTitle(title);//This puts a title up top of the Frame 
        Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//places an x box that closes when clicked on 
        Frame.setVisible(true);//This activates the JFram when is set true. 
        Frame.setLayout(new GridLayout(1,2));//This sets the layout of the Frame and since i want a Grid i used a GirdLayout 
        //Functions and placed it inside the setlayout functions. to get 2 grids i places 1 meaning 1 row and 2 for 2 cols 
        unsorted_words=new TextArea(); //From the TextArea class i made three variables 
        sorted_words= new TextArea(); 
        linked_words= new TextArea(); 
        Container panel=new Container(); 
        panel=Frame.getContentPane(); 
        panel.add(unsorted_words); 
        panel.add(sorted_words); 
        panel.add(linked_words); 

    } 


    public void add_unsorted(String words){ 
     unsorted_words.append(words+"\n");//add words to GUI 

    } 

    public void add_sorted(String words){ 
     sorted_words.append(words+"\n"); 
    } 

    public void add_linked(List<String> linked_words2){ 
     linked_words.append(linked_words2+"\n"); 
    } 

} 
+1

Mettez-vous le contenu du tableau dans un JLabel, puis ajoutez-le au volet de contenu du cadre? Si oui, supprimez-vous l'ancienne étiquette avant d'en ajouter une nouvelle? – Yulek

+0

Pourriez-vous ajouter le segment de code afin que nous puissions voir où vous vous êtes trompé? –

+1

Il suffit de télécharger le code. Je les mets dans un conteneur puis dans un volet de contenu. –

Répondre

1

Pour une réponse plus définitive, Déposez une MCVE

Voyant que vous n'avez pas posté de code, je devine que vous utilisez un JLabel ou un JList ou quelque chose de ce genre à affiche le tableau. Peu importe celui que vous faites, vous devez dire au composant de mettre à jour son contenu, il ne le fait pas lui-même. Pour ce faire, vous devez appeler les composants .setText() ou une méthode similaire. Si vous avez un JLabel ou JTextArea, il pourrait ressembler à ceci

labelOrTextArea.setText("New Text"); 

Si vous utilisez un JList vous devez mettre à jour les listes Default List Model comme celui-ci

dlm.addElement("New Text"); 

MISE À JOUR

Je vois deux choses mal avec votre code. Tout d'abord JFrame Frame = new JFrame conventionnellement, les variables doivent commencer par une lettre minuscule et ne doivent pas contenir de caractères de soulignement '_'. Vous utilisez également des composants AWT au lieu de composants Swing. Vous devez utiliser les goûts JTextArea, JPanel (Theres pas JContainer), JLabel etc.

Vous êtes également le panneau n'ajouterez au châssis.

frame.add(panel); 

Vous ne devez également pas ajouter d'éléments au cadre ou aux panneaux après avoir défini la visibilité sur true. Donc, vous devez configurer votre cadre comme celui-ci

import javax.swing.*; 
import java.awt.*; 
import java.util.List; 
public class Project1GUI 
{ 
    JTextArea unsorted_words, sorted_words, linked_words; 

    public Project1GUI() 
    { 
     JFrame frame = new JFrame("Title"); 
     JPanel panel = new JPanel(new GridLayout(2, 1)); 

     unsorted_words = new JTextArea(); 
     sorted_words = new JTextArea(); 
     linked_words = new JTextArea(); 

     panel.add(unsorted_words); 
     panel.add(sorted_words); 
     panel.add(linked_words); 

     frame.add(panel); 
     frame.setSize(400,400); 
     frame.setLocation(200,200); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 

Vous pouvez ensuite mettre en œuvre les méthodes que vous avez actuellement et les appeler dans un ActionListener ou tel.

Résultat:

Three TextAreas

En plus de tout cela, vous ne devriez pas compter sur l'utilisation de static car il enlève des points principaux de la POO.

+0

WOW grâce à un tas Grande perspicacité et des conseils .. Im nouveau à l'apprentissage Java si désolé pour les confusions évidentes mais encore merci! –

+0

Une question cependant, si je devais implémenter le code comme vous l'avez décrit, le JFrame régénérerait-il automatiquement si l'utilisateur entre une nouvelle chaîne pour stocker dans le tableau? –

+0

Que voulez-vous dire exactement? Essayez-vous d'obtenir le contenu des zones de texte et de le stocker dans un tableau? – Jonah