Extends jtextarea

Moderators: jkien, Xilvo

Reageer
Gebruikersavatar
Berichten: 6.905

Extends jtextarea

Ik wil een JTextArea aanpassen zodat er een aanpasbar tekst en een niet aanpasbare tekst in komt. Indien er geklikt wordt zal de niet aanpasbare tekst gewoon verdwijnen:

Code: Selecteer alles

package applicationGUI;

import java.awt.Dimension;

import java.awt.event.*;

import javax.swing.JTextArea;

@SuppressWarnings("serial")

public class TextArea2 extends JTextArea {

protected String textPublic;

protected String textPrivate;

public TextArea2() {

super();

createFocusMethod();

textPublic = "";

textPrivate = "";

setText(textPublic);

}

public TextArea2(int rows, int columns) {

super(rows, columns);

createFocusMethod();

textPublic = "";

textPrivate = "";

setText(textPublic);

}

public TextArea2(String text, int rows, int columns) {

super(text, rows, columns);

textPublic = text;

textPrivate = "";

createFocusMethod();

setText(textPublic + textPrivate);

}

public TextArea2(String text) {

super(text);

textPublic = text;

textPrivate = "";

createFocusMethod();

setText(textPublic + textPrivate);

}

public void setPublicText(String text) {

textPublic = text;

setText(textPublic + textPrivate);

}

public void setPrivateText(String text) {

textPrivate = text;

setText(textPublic + textPrivate);

}

@Override

public Dimension getPreferredSize() {

return new Dimension(this.getRootPane().getWidth(), this.getRowHeight()

* this.getLineCount());

}

@Override

public Dimension getMaximumSize() {

return this.getPreferredSize();

}

@Override

public Dimension getMinimumSize() {

return new Dimension(this.getRootPane().getWidth(), this.getRowHeight());

}

private void createFocusMethod() {

addFocusListener(new FocusListener() {

@Override

public void focusGained(FocusEvent arg0) {

setText(textPublic);

}

@Override

public void focusLost(FocusEvent arg0) {

textPublic = getText();

setText(textPublic + textPrivate);

}

});

}

}
Verborgen inhoud

Code: Selecteer alles

package applicationGUI;

import javax.swing.*;

import java.awt.*;

public class TestApp extends JFrame  {

public static void main(String[] args) {

new TestApp();

}

public TestApp() {

setExtendedState(JFrame.MAXIMIZED_BOTH);

setMinimumSize(new Dimension(200, 200));

setLayout(new GridLayout(2,1));

TextArea2 io1 = new TextArea2();

io1.setPrivateText("\nNiet aan te passen");

add(io1);

TextArea2 io2 = new TextArea2();

io2.setPrivateText("\nNiet aan te passen");

io2.setBackground(Color.gray);

add(io2);

setVisible(true);

validate();

}

}


Nu zal het gebruik van JTextArea.setText(String text) nog problemen opleveren. Kan ik deze methode overriden zodat die text ook in de variabele textPublic zet?
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 5.609

Re: Extends jtextarea

Nu zal het gebruik van JTextArea.setText(String text) nog problemen opleveren. Kan ik deze methode overriden zodat die text ook in de variabele textPublic zet?
Waarom niet?

Ik begrijp overigens niet goed waarom je iedere keer naar de variabelen wil wegschrijven. Ook begrijp ik niet waarom de variabelen protected zijn. Kunnen ze niet beter private zijn, en aangevraagd worden met een getPublicText() ofzo? Op die manier hoef je ze niet up-to-date te houden (wat erg buggevoelig is)...
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Gebruikersavatar
Berichten: 6.905

Re: Extends jtextarea

317070 schreef:Waarom niet?

Ik begrijp overigens niet goed waarom je iedere keer naar de variabelen wil wegschrijven.
Ik moet toch de twee teksten bijhouden aangezien deze onafhankelijk van elkaar kunnen wijzigen. Ik zie nu ineens de oplossing voor mijn vraag: setText overriden geeft enkel problemen aangezien altijd de private tekst dan zou meekomen wat niet wenselijk is. (Overriden kan wel blijkbaar met super.setText() te gebruiken in de nieuwe methoden. Aldus iets nieuws geleerd :) )

Voorlopig zal ik het hier bij houden denk ik.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Reageer