Avatar billede camilla_hansen Nybegynder
10. december 2003 - 23:30 Der er 15 kommentarer

Sortering af ord i JTextArea vha. array.

Hejsa... Jeg er forholdsvis ny til det her, så det kan godt være det er ret simpelt. Men jeg spørger nu alligevel:

jeg vil lave en applet, der kan sortere ord alfabetisk i et JTextArea, efter at de er blevet indtastet i et JTextField. Jeg kan bare ikke finde en metode til at gøre det med. kan I hjælpe mig? :o)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*; 

public class Alfabet extends JApplet implements ActionListener
{
  JTextField textField;
  JTextArea textArea;

  public void init()
  {
      JPanel contents = (JPanel)getContentPane(); 

      contents.setBackground(Color.white); 
     
      JLabel label = new JLabel("Input: ");

      textField = new JTextField();
      textField.addActionListener(this);
     
      JButton button = new JButton("Tryk her");
      button.addActionListener(this);
             
      textArea = new JTextArea();
      textArea.setEditable(false); 
      textArea.setLineWrap(true); 
             
      JScrollPane scrollTextArea = new JScrollPane( textArea );
     
      JPanel topPanel = new JPanel(new BorderLayout());
      topPanel.setOpaque(false);
     

      topPanel.add( label, BorderLayout.WEST );

      topPanel.add( textField, BorderLayout.CENTER );

      topPanel.add( button, BorderLayout.EAST );     

      contents.add( topPanel, BorderLayout.NORTH );

      contents.add( scrollTextArea, BorderLayout.CENTER );

  }
Avatar billede mikkelbm Nybegynder
10. december 2003 - 23:34 #1
hvis du gemmer dine indtastede Strings i et array, mener jeg bare du kan sige:

Arrays.sort(mitArray);
Avatar billede mikkelbm Nybegynder
10. december 2003 - 23:36 #2
og derefter tilføje dem til dit JTextArea:

for (int i = 0; i < mitArray.length; i++)
{
  mitTextArea.append(mitArray[i] + "\n");
}
Avatar billede mikkelbm Nybegynder
10. december 2003 - 23:38 #3
hvis du ikke kender antal ord der indtastes, vil det nok være bedre at bruge ArrayList. Der kan du dynamisk tilføje og slette Objekter fra.
Avatar billede arne_v Ekspert
10. december 2003 - 23:39 #4
Nu er de jo indtastet i textArea går jeg ud fra.

Men:

String words = textArea.getText().Split(" ");

kunne lave et array.
Avatar billede arne_v Ekspert
10. december 2003 - 23:39 #5
String[] words = textArea.getText().Split(" ");
Avatar billede arne_v Ekspert
10. december 2003 - 23:41 #6
Så hvis du kombinerer:

String[] words = textArea.getText().Split(" ");
Arrays.sort(words);
textArea.setText("");
for (int i = 0; i < words.length; i++) {
  textArea.append(words[i] + " ");
}
Avatar billede mikkelbm Nybegynder
10. december 2003 - 23:43 #7
Hvis de er indtastet ja, jeg havde forstået det sådan at man indtastede et ord og så blev det tilføjet til textarea'et..
den skulle så opdatere det textarea hver gang man havde skrevet et ord!

Men jeg venter på en uddybende forklarting :)
Avatar billede mikkelbm Nybegynder
10. december 2003 - 23:46 #8
der skulle selvfølgelig ha' stået forklaring...
Avatar billede arne_v Ekspert
10. december 2003 - 23:47 #9
Du har sikkert ret.

Jeg tænkte bare at man indtastede i text area og klikkede på button og så
blev text area sorteret.
Avatar billede camilla_hansen Nybegynder
11. december 2003 - 11:21 #10
Ja, det er meningen, at man indtaster ét ord, og så opdateres der hele tiden...

Men jeg kan ikke rigtig få det til at virke. Jeg tror, jeg tilføjer det det forkert i forhold til resten af koden. Kan det være derfor?
Avatar billede mikkelbm Nybegynder
12. december 2003 - 00:33 #11
Det her virker:

public void actionPerformed(ActionEvent e)
{
    String temp = textField.getText();
    addText(temp);
}

public void addText(String text)
{
    textArea.append(text + "\n");
    String[] words = textArea.getText().split("\n");
    Arrays.sort(words);
    textArea.setText("");
    for (int i = 0; i < words.length; i++)
    {
          textArea.append(words[i] + "\n");
    }
}

Du skal bare lige huske at:

import java.util.Arrays;
Avatar billede mikkelbm Nybegynder
15. december 2003 - 17:04 #12
Var der noget du kunne bruge???
Avatar billede mikkelbm Nybegynder
02. januar 2004 - 12:38 #13
Lukketid?
Avatar billede mikkelbm Nybegynder
01. marts 2004 - 21:55 #14
?
Avatar billede mikkelbm Nybegynder
18. april 2004 - 10:38 #15
???
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior Platform Engineer

Forsikrings- og pensionsakademiet A/S

IT-teknisk profil