Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajouter un scrollBar à ma JtextArea

Sujet résolu
    20 janvier 2019 à 15:05:00

    Bonjour a touset bonne année !

    Je débute le java, (j'ai commencé le 10 décembre).

    Je suis en train de faire pour m'entrainer un éditeur de texte qui ecrit en bdd mes nouveau doc, je peux : afficher, modifier supprimer et sauvegarder mes doc dans ma bdd et j'ai également mis la possibilité d’exporter dans un fichier et d'importer un fichier. voilà en gros pour la présentation de mon projet.

    je m'arrache le peu de cheveux qu'il me reste sur 2 points.

    Fixer une taille à ma JTextArea de facon qu'elle soit fixée, et surtout

    J'essaie en vain d'ajouter un scrollbar vertical à ma JTextArea...

    pouvez vous m'aider car j'ai fouillé a fond le net en testé plusieurs choses mais rien ne marche.

    je pense que ca doit se gerer dans la méthode public JTextArea getBlocTxt() ligne 86

    EDIT : J'ai tenté ceci mais ca marche toujours pas  ::

    	public JTextArea getBlocTxt() {
    	if (blocTxt == null) {
    		blocTxt = new JTextArea();
    		scroll =new JScrollPane(blocTxt);
            add(scroll);
            setVisible(true);
    	}
    	return blocTxt;


    EDIT 2 : Je viens de tester ceci ::

    public JTextArea getBlocTxt() {
    		if (blocTxt == null) {
    			blocTxt = new JTextArea();
    			scroll = new JScrollPane(blocTxt);
    			scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    		}
    		return blocTxt;
    	}

    mais encore une fois ca ne fonctionne pas :'(

    pouvez vous m'aider pauvre débutant que je suis.

    mille merci d'avance

    mon code :

    package ihm;
    
    import java.awt.event.*;
    import javax.swing.*;
    
    import java.awt.*;
    import java.io.*;
    import java.util.List;
    
    import org.slf4j.LoggerFactory;
    
    import ch.qos.logback.classic.Logger;
    import bll.BLLException;
    import bll.DocumentManager;
    import bo.Document;
    
    public class EcranPrincipal extends JFrame{
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L; 
    	File document = null; 
    	private DocumentManager mnger;  
    	private JTextField monTitre;  
    	private JScrollPane scroll;
    	private JTextArea blocTxt; 
    	private List<Document> catalogue;
    	private int index = 0;
    	private JButton btnPreview, btnNext, btnNew, btnSave, btnDelete, btnImport, btnExport;
    	Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("ihm.EcranPrincipal");
    
    	public EcranPrincipal() {
    		setTitle("Editeur de Texte");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setSize(new Dimension(480, 650));
    		setLocationRelativeTo(null);
    		Content();
    		try {
    			catalogue = DocumentManager.getInstance().getCatalogue();
    			mnger = DocumentManager.getInstance();
    		} catch (BLLException e) {
    			logger.error("Error" + e.getMessage());
    			e.printStackTrace();
    		}
    
    		afficherDocument();
    	}
    	
    	private void Content() {
    	JPanel content = new JPanel();
    	content.setOpaque(true);
    	content.setLayout(new GridBagLayout());
    	content.setLayout(new GridBagLayout());
    	
    	GridBagConstraints gbc = new GridBagConstraints();
    	
    	gbc.gridx = 0;
    	gbc.gridy = 0;
    	gbc.gridwidth = 2;
    	content.add(new JLabel("nom du document : "), gbc);
    	gbc.gridx = 0;
    	gbc.gridy = 1;
    	gbc.gridwidth = 2;
    	content.add(getMonTitre(), gbc);
    	gbc.gridx = 0;
    	gbc.gridy = 2;
    	gbc.gridwidth = 2;
    	content.add(getBlocTxt(), gbc);
    	gbc.gridx = 0;
    	gbc.gridy = 3;
    	gbc.gridwidth = 2;
    	content.add(getPanneauBoutons(), gbc);
    	
    	setContentPane(content);	
    	}
    
    	public JTextField getMonTitre() {
    		if (monTitre == null) {
    			monTitre = new JTextField(30);
    		}
    		return monTitre;
    	}
    	
    
    	
    	public JTextArea getBlocTxt() {
    	if (blocTxt == null) {
    		blocTxt = new JTextArea();
    	}
    	return blocTxt;
    }
    
    	private JPanel getPanneauBoutons() {
    		JPanel panelBoutons = new JPanel();
    		panelBoutons.setLayout(new FlowLayout());
    		panelBoutons.add(getBtnPreview());
    		panelBoutons.add(getBtnNew());
    		panelBoutons.add(getBtnImport());
    		panelBoutons.add(getBtnExport());
    		panelBoutons.add(getBtnSave());
    		panelBoutons.add(getBtnDelete());
    		panelBoutons.add(getBtnNext());
    		return panelBoutons;
    	}
    
    	public JButton getBtnPreview() {
    		if (btnPreview == null) {
    			btnPreview = new JButton();
    			btnPreview.setIcon(new ImageIcon(this.getClass().getResource("images/Back24.gif")));
    			btnPreview.setEnabled(false);
    			btnPreview.addActionListener(new ActionListener() {
    
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					btnDelete.setEnabled(true);
    					if (index > 0) {
    						index--;
    						afficherDocument();
    						btnNext.setEnabled(true);
    					}
    					if (index == 0) {
    						btnPreview.setEnabled(false);
    					}
    
    				}
    			});
    		}
    		return btnPreview;
    	}
    
    	public JButton getBtnNext() {
    
    		if (btnNext == null) {
    			btnNext = new JButton();
    			btnNext.setIcon(new ImageIcon(this.getClass().getResource("images/Forward24.gif")));
    			btnNext.setEnabled(true);
    			btnNext.addActionListener(new ActionListener() {
    
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					if (index < catalogue.size() - 1) {
    						btnPreview.setEnabled(true);
    						btnNext.setEnabled(true);
    						index++;
    						afficherDocument();
    					} else {
    						btnPreview.setEnabled(true);
    						btnNext.setEnabled(false);
    						afficherDocument();
    					}
    				}
    			});
    		}
    		return btnNext;
    	}
    	public JButton getBtnImport() {
    		if (btnImport == null)  {
    			btnImport = new JButton();
    			btnImport.setIcon(new ImageIcon(this.getClass().getResource("images/Import24.gif")));
    			btnImport.addActionListener(new ActionListener() {
    				
    				@Override
    				public void actionPerformed(ActionEvent e) {
    				       
    		            JFileChooser chooser = new JFileChooser();
    		            chooser.setDialogTitle("Ouvrir un fichier ..." );
    		            chooser.showOpenDialog(getBlocTxt());
    		            if(chooser.getSelectedFile()==null){
    		                return;
    		            }
    		            document=chooser.getSelectedFile();
    		            try {
    		                FileInputStream fichier = new FileInputStream(chooser.getSelectedFile());
    		                int size=fichier.available();
    		                byte[] bytes = new byte[size];
    		    
    		                fichier.read(bytes);
    		                blocTxt.setText(new String(bytes));
    		                fichier.close();
    		            } catch (IOException erreur) {
    		                JOptionPane.showMessageDialog(null,"Erreur --- "+erreur.toString(),"Erreur",JOptionPane.ERROR_MESSAGE);
    		            }
    		        }
    			});
    		}	
    		return btnImport;
    	}
    	
    	public JButton getBtnExport() {
    		if (btnExport == null) {
    			btnExport = new JButton();
    			btnExport.setIcon(new ImageIcon(this.getClass().getResource("images/Export24.gif")));
    			btnExport.addActionListener(new ActionListener() {
    				
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					if(document==null) saveas();
    	                else save();
    				}
    			});
    		}	
    			return btnExport;
    	}
    
    	public JButton getBtnNew() {
    		if (btnNew == null) {
    			btnNew = new JButton();
    			btnNew.setIcon(new ImageIcon(this.getClass().getResource("images/New24.gif")));
    			btnNew.addActionListener(new ActionListener() {
    
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					afficherVide();
    				}
    			});
    		}
    		return btnNew;
    	}
    
    	public JButton getBtnSave() {
    		if (btnSave == null) {
    			btnSave = new JButton();
    			btnSave.setIcon(new ImageIcon(this.getClass().getResource("images/Save24.gif")));
    			btnSave.addActionListener(new ActionListener() {
    
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					JOptionPane.showMessageDialog(btnSave, "Enregistrement ok");
    					modifDocument();
    				}
    			});
    		}
    		return btnSave;
    	}
    
    	public JButton getBtnDelete() {
    		if (btnDelete == null) {
    			btnDelete = new JButton();
    			btnDelete.setIcon(new ImageIcon(this.getClass().getResource("images/Delete24.gif")));
    			btnDelete.addActionListener(new ActionListener() {
    
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					if (index >= 0) {
    						try {
    							mnger.removeDocument(catalogue.get(index).getIdDocument());
    							if (index == 0) {
    								catalogue.remove(index);
    							} else {
    								catalogue.remove(index);
    								index--;
    							}
    							afficherDocument();
    							logger.warn("Suppression ok - loggerEcranPrincipal - WARN.");
    						} catch (BLLException e1) {
    							logger.error("NE SUPPRIME PAS - loggerEcranPrincipal - ERROR.");
    							e1.printStackTrace();
    						}
    					}
    				}
    			});
    		}
    		return btnDelete;
    	}
    	
    
        
     public void saveas(){
             JFileChooser chooser = new JFileChooser();
             chooser.setDialogTitle("Enregistrer le fichier sous ..." );
             chooser.showSaveDialog(this);
             if(chooser.getSelectedFile()==null) {
                 return;
             }
             document=chooser.getSelectedFile();
             save();
         }
    	public void save(){
            try {
                FileOutputStream fichier = new FileOutputStream(document);
               // fichier.write(monTitre.getText().getBytes());
                fichier.write(getBlocTxt().getText().getBytes());
                fichier.close();
            } catch (IOException erreur) {
                JOptionPane.showMessageDialog(null,"Erreur --- "+erreur.toString(),"Erreur",JOptionPane.ERROR_MESSAGE);
            }
        }
    		
    	private void afficherDocument() {
    		logger.trace("Passe par la méthode afficherArticle() - loggerEcranPrincipal - trace.");
    		if (index < catalogue.size()) {
    			Document document = catalogue.get(index);
    			getMonTitre().setText((document.getTitre()));
    			getBlocTxt().setText((document.getContenu()));
    		} else
    			afficherVide();
    	}
    
    	private void afficherVide() {
    			logger.trace("Passe par la méthode afficherVide() - loggerEcranPrincipal - trace.");
    			index = catalogue.size();
    			getMonTitre().setText("");
    			getBlocTxt().setText("");
    		
    	}
    	private void modifDocument() {
    		logger.trace("Passe par la méthode modifDocument() - loggerEcranPrincipal - trace.");
    		if (index < catalogue.size()) {
    			Document document = catalogue.get(index);
    			document.setTitre(getMonTitre().getText());
    			document.setContenu(getBlocTxt().getText());
    			try {
    				mnger.updateDocument(document);
    				logger.warn("Passe la modification - loggerEcranPrincipal - WARN.");
    			} catch (BLLException e) {
    				logger.error("NE PASSSE la modification - loggerEcranPrincipal - ERROR.");
    				e.printStackTrace();
    			}
    		}
    		if (index == catalogue.size()) {
    			Document document = null;
    			document = new Document(getMonTitre().getText(), getBlocTxt().getText());
    			try {
    				mnger.addDocument(document);
    				catalogue.add(document);
    				logger.warn("Passe l'insertion - loggerEcranPrincipal - WARN.");
    			} catch (BLLException e) {
    				logger.error("NE PASSSE l'insertion - loggerEcranPrincipal - ERROR.");
    				e.printStackTrace();
    			}
    		}
    	}
    }
    



    -
    Edité par Zer0Co0l 20 janvier 2019 à 16:40:45

    • Partager sur Facebook
    • Partager sur Twitter
      22 janvier 2019 à 13:50:34

      Bonjour,

      Tu n'étais pas loin de la solution (d'ailleurs peut être l'as tu trouvée entre temps):

      import java.awt.BorderLayout;
      
      import javax.swing.JFrame;
      import javax.swing.JScrollPane;
      import javax.swing.JTextArea;
      
      public class TestJTextArea extends JFrame{
      
      	private static final long serialVersionUID = 1L;
      	public TestJTextArea() {
      		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              setLocationRelativeTo(null);
              setSize(300,200);
              setLayout(new BorderLayout());
              JScrollPane scrollPane = new JScrollPane(
              		new JTextArea(), 						  //Le contenu du JScrollPane
              		JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,    //La barre verticale toujours visible
              		JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); //La barre horizontale toujours visible
              getContentPane().add(scrollPane, BorderLayout.CENTER);
              
      	}
      	
      	public static void main(String[] str) {
      		new TestJTextArea().setVisible(true);
      	}
      
      }





      -
      Edité par @rtur 22 janvier 2019 à 13:51:36

      • Partager sur Facebook
      • Partager sur Twitter
        25 janvier 2019 à 23:16:38

        salut,

        en effet je n'était pas loin... je vais bien regarder ton code en detail.

        merci bcp d'avoir pris le temps

        • Partager sur Facebook
        • Partager sur Twitter

        Ajouter un scrollBar à ma JtextArea

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown