Wątek przeniesiony 2014-05-31 19:25 z Java przez bogdans.

JTextArea - zmiana tekstu po nacisnieciu przycisku

0

Witam,
mam problem ze zmianą tekstu po naciśnięciu przycisku. JTextArea posiada swoją klasę, natomiast przycisk znajduje się w innej klasie.

oto kod klasy z JTextArea

package DisplayWindow;

import java.awt.TextArea;
import java.io.File;
import java.util.Scanner;

@SuppressWarnings("serial")
public class InformationLayout extends TextArea {

	static Scanner scan;
	static String line;
	static String information = "";
	
	public InformationLayout(){
		
		if (ObjectLayout.object.equals("czaszka"))
			new InformationLayout();
			//this.replaceSelection(load());
			//this.insert(load(), 5);
			this.setText("load()");
		if (ObjectLayout.object.equals("szescian"))
			//this.insert(load(), 6);
			this.setText("load1()");
		
	}

	public static String load() {
		scan = null;
		try
        {
			scan = new Scanner(new File("res/czaszka/czaszka.txt"));
        }

        catch(Exception e)
        {
            System.out.println("File not found");
        }
		
		while(scan.hasNext())
		{
			line = scan.nextLine();
			information += line + "\n";
		}
		scan.close();
		return information;
	}
	
	public static String load1() {
		scan = null;
		try
        {
			scan = new Scanner(new File("res/szescian/szescian.txt"));
        }

        catch(Exception e)
        {
            System.out.println("File not found");
        }
		
		while(scan.hasNext())
		{
			line = scan.nextLine();
			information += line + "\n";
		}
		scan.close();
		return information;
	}
}

przykładowy kod przycisku:

	class czaszkaButton extends JButton implements ActionListener {
	       
        public czaszkaButton() {
        	super("Czaszka");
        	addActionListener(this);
        }
        
		@Override
        public void actionPerformed(ActionEvent e) {
			MyFrame.stopOpenGL();
			startOpenGL();
			object = "czaszka" ;
			MyFrame.cardLayout.show(MyFrame.cardPanel, "1");
        }
    }
1

Nie widzę w tym kodzie kodu, który zmieniałby tekst w TextArea i był wywoływany.
A swoja drogą, ten kod nadaje się tylko do wyrzucenia przez okno.
//Edit
Podstawowe usterki (wg kolejności występowanie, nie wg ważności):

  • po co są pola scan, line i information?, pierwsze dwa powinny być zmiennymi lokalnymi metody load, information jest zupełnie zbędne - zawiera to samo co TextArea
  • pola i metody statyczne,
  • w konstruktorze klasy InformationLayout wywołujesz, nie wiadomo po co, konstruktor klasy InformationLayout,
  • dwie prawie identyczne metody: load i load1, powinna być jedna metoda z argumentem będącym nazwą pliku,
  • używanie w pętli o nieznanej długości operatora konkatenacji jest bardzo nierozsądne, ponieważ String jest immutable, to ten operator jest wolny (tysiące razy wolniejszy od metody append w klasie StringBuilder) http://ideone.com/biXUhs.
0

Problem rozwiązany, dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1