Prevent User Input but Allow Highlighting in TextArea - java

I have a text area that replicates a console output in my GUI. Id like for the user to select highlight and copy the output but not allow them to insert. Is there a way this could be done?
Right now I have a simple textArea editor and Ive tried terminalText.setDisable(true);. While this disables userinput it completely disables users from highlighting text as well.
I set my terminal text doing the following:
public void printToConsole(String s){
consoleBuilder.append(s);
terminalText.setText(consoleBuilder.toString());
}
I found that this disables input; however I am now unable to enter text using setText() method above and I cannot highlight:
terminalText.setTextFormatter(new TextFormatter<String>((Change c) -> {
return null ;
}));

Related

Cannot use setText() method in Java Netbeans

I inserted a text field and now I just want it to say "working" within the text field. I do not have any errors, but when the display comes up the text field is empty. The first line of the code below was generated by netbeans. I wrote the second line.
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText("working");
}
Looks like you are trying to do that in the wrong method --> jTextField1ActionPerformed
try moving this to a OnClickEvent or in the initComponents of the App
jTextField1.setText("working");

jComboBox editor returns empty String

I wrote a autocomplete combobox program in which I search for the words entered by the user inside a file. The program works fine, however, the combobox editor doesn't return anything when something is typed in it. I don't know why is that.. Here is the chunk of code that deals with the problem.
// in GUI class constructor
InstantSearchBox = new JComboBox();
InstantSearchBox.setEditable(true);
/*****/
KeyHandler handle = new KeyHandler();
InstantSearchBox.getEditor().getEditorComponent().addKeyListener(handle);
// Keylistener class (KeyPressed method)
try
{
dataTobeSearched = InstantSearchBox.getEditor ().getItem ().toString ();
// the string variable is empty for some reason
System.out.println ("Data to be searched " + dataTobeSearched);
}
catch (NullPointerException e)
{
e.printStackTrace ();
}
Regards
Don't use a KeyListener. The text typed has not beeen added to the text field when at the time a keyPressed event is generated.
The better way to check for changes to the text field is to add a DocumentListener to the Document of the text field. See the section from the Swing tutorial on How to Write a Document Listener for more information.
You should use dataTobeSearched = (String) InstantSearchBox.getSelectedItem();
Despite its name, for editable comboboxes, this method just returns what text is entered.
The editor is only used internally by JComboBox to temporarily capture the input as they are typing. Once they have typed, the editor is cleared down and the text transferred back to the combobox model.
This allows editors to be shared amongst multiple comboboxes all at once - they just jump in when they are needed, capture input, jump back out again and clear down when editing is finished.
Use InstantSearchBox.getSelectedItem() instead of InstantSearchBox.getEditor().getItem().

how to set nextline in textfield

so im creating a chat with a Gui that contains pictures of some men who has a textfield above them that will contain the text that the person chat.
This is by far the hardest project ive created and im quite proud of my accomplisments ive already created a multithreaded server and protocol for my chat client :) ive gotten a guy from Stackoverflow to help me resize my textfield if the text going into it is larger than the size of the textfield :) but now i have another problem when the textfield resizes it resizes only widght because my textfield doesnt change line
ive created the following code to try and make it change lines but it doesnt seem to work could anyone help me?
Send.setOnAction(new EventHandler<ActionEvent>() {
#Override
public void handle(ActionEvent event) {
String x = textField_chat.getText();
if (x.length() > 10) {
String oldLine = x.substring(0,5);
String newLineString = x.substring(5,x.length());
txt_ChatPerson1.setText(oldLine+"\n"+newLineString);
}else {
textField_chat.setText("");
txt_ChatPerson1.setVisible(true);
txt_ChatPerson1.setText(x);
}
Use a TextArea instead.
TextArea description from it's javadoc:
Text input component that allows a user to enter multiple lines of plain text. Unlike in previous releases of JavaFX, support for single line input is not available as part of the TextArea control, however this is the sole-purpose of the TextField control. Additionally, if you want a form of rich-text editing, there is also the HTMLEditor control.
I'm taking a shot in the dark here but if you are running this on Windows the new line character is "\r\n".
Try this:
txt_ChatPerson1.setText(oldLine+"\r\n"+newLineString);

Pressing TAB key loses focus on widget

I am using a Table component in SWT. Whenever I edit a value in this table and press enter, this value is saved in the text component in this table.
But when I want to enter 2 words seperated with a TAB between them, then the editor loses focus and moves on to the next cell to edit(like pressing tab in a browser form). I don't want this to happen and let my users enter tabs between words without the focus getting lost. Anyone have an idea how to create this?
I allready tried using a keyListener, but it seems the tab event isn't even processed by this listener
You could add a TraverseListener to your textField.
text.addTraverseListener(new TraverseListener () {
public void keyTraversed(TraverseEvent e) {
switch (e.detail) {
case SWT.TRAVERSE_TAB_NEXT:
case SWT.TRAVERSE_TAB_PREVIOUS: {
e.doit = false;
}
}
}
});
Check out this example code snippet.

text in text box

i am pretty new to the gwt framework and i am using it for building the ui of my web site,
i would like to make the text box have a text in it that once the user clicks on it for the first time, the text disappears. and in the rest of the time it behaves like a normal text box
any ideas on how to do it?
When you create the textbox, set the default text and add a keyboard listener:
TextBox box = new TextBox();
box.setText("Default Text");
box.addKeyboardListener(this);
defaultValue = true; // this is a global boolean value
Then have your class implement KeyboardListener leaving them all blank except:
public void onKeyPress(Widget arg0, char arg1, int arg2)
{
if(defaultValue)
{
box.setText = "";
defaultValue = false;
}
}
you can add a clickHandler to the box.
Within the handler you do something as easy as:
if(text==DEFAULT_TEXT)
{
text==""
}
If someone is going to write again the same DEFAULT_TEXT it would get wiped out again.
If you want to avoid that add boolean variable in the check expression.
Can't tell it for GWT, but a general approach could be:
use a variable to flag, whether the text box is 'initialized' or 'in use'
add a listener to the text widget (I'd use a KeyboardListener and make the text disappear when the user starts entering text and not on the first - maybe accidental - mouse click)
When the listener receives the first event for the widget (flag = 'initialized'), clear the flag and replace the text inside the text field with the actual keystroke.
(for a click listener: upon the first click on the widget clear the flag and the text box.)

Categories

Resources