2016-05-17 3 views
0

J'ai actuellement un programme qui récupère un article de la base de données SQL puis le charge dans un textArea où l'utilisateur peut le voir. Mais pour le moment, mon programme a des limitations majeures en ce sens qu'il ne peut afficher qu'un seul message parce que je ne peux pas saisir plusieurs messages.TextArea avec News Posts - Insertion SQL (démarrage de nouvelles lignes)

JScrollPane scrollPane_2 = new JScrollPane(); 
     scrollPane_2.setViewportBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null)); 
     scrollPane_2.setBounds(769, 125, 294, 430); 
     frame.getContentPane().add(scrollPane_2); 

     JTextArea textArea = new JTextArea(); 
     scrollPane_2.setViewportView(textArea); 
     textArea.setFont(new Font("Lantinghei TC", Font.PLAIN, 13)); 
     textArea.setEditable(false); 
     textArea.setBackground(Color.LIGHT_GRAY); 
     textArea.setLineWrap(true); 
     textArea.setWrapStyleWord(true); 

     frame.getContentPane().add(lblChangelogAndNews); 
     try { 
      Connection conn = DriverManager.getConnection(Host, Name, Pass); 
      PreparedStatement pst = conn.prepareStatement("SELECT * From `news_1`"); 
      ResultSet rs = pst.executeQuery(); 
      while(rs.next()) { 
       String content =rs.getString("content"); 
       textArea.setText(content); 
      } 
     } 
     catch (Exception e) { 
     } 

Ce que je vais avoir du mal est de savoir comment je contourner saisir plusieurs éléments d'information puis les afficher dans une mise en page comme celui-ci

Titre

Contenu

(Avec un espace entre chaque poste)

Titre

Contenu

Les méthodes que je l'ai essayé au moment tous les problèmes de cause, donc je viens d'énumérer un simple travail de début qui affiche les bases de ce que je veux.

Si vous voulez plus d'informations sur ce que j'essaie de faire, veuillez commenter afin de pouvoir répondre avec des informations supplémentaires.

Merci Quinn (Prenez garde Je suis actuellement nouveau pour le codage d'où la mauvaise mise en page)

Répondre

0
  try { 
      String content = ""; 
      Connection conn = DriverManager.getConnection(Host, Name, Pass); 
      PreparedStatement pst = conn.prepareStatement("SELECT * From `news_1`"); 
      ResultSet rs = pst.executeQuery(); 
      while(rs.next()) { 
       content = content + rs.getString("title") + "\n"; 
       content = content + rs.getString("content") + "\n"; 
       content = content + "\n"; 
      } 
      textArea.setText(content); 
     } 
     catch (Exception e) { 
     } 

J'ai décidé à la fin de ne pas utiliser une table et à la place utilisé mon TextArea en utilisant le \ n pour me donner de nouvelles lignes puis en parcourant ma base de données en saisissant le contenu Title +

2

Ce n'est pas exactement un problème de MySQL, mais plutôt un problème de swing java. Si vous regardez votre boucle while, vous pouvez voir que c'est fini d'écrire la même zone de texte encore et encore.

 while(rs.next()) { 
      String content =rs.getString("content"); 
      textArea.setText(content); 
     } 

Ce dont vous avez besoin est un JTable avec un modèle lié à la base de données. Voici un excellent Q/A précédent ici qui explique comment cela se fait:

Most simple code to populate JTable from ResultSet

(normalement je voterais pour fermer en double, mais je me suis senti une explication était nécessaire ici)

+1

Merci d'avoir lié ce que j'ai échoué à trouver plus tôt je ne cherchais pas JTables mais c'est très utile. –

+0

a cliqué accidentellement en regardant ce post. Pardon –