how can i get java to enter/type text into a textbox for me once i select it(click inside it) so the cursor is there. Also how would i get it to send the enter key or other "non-text" keys.
Progr4mmer 0 Junior Poster
ztini
You can determine focus with a focusListener:
final JTextField field = new JTextField(20);
field.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent arg0) {
field.setText("Enter Your Text");
}
@Override
public void focusLost(FocusEvent arg0) {
// Do something clever
}
});
and you determine if enter, f1, etc was pushed with a keyListener:
field.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER)
// do something clever
}
});
Edited by ztini because: n/a
masijade 1,351 Industrious Poster Team Colleague Featured Poster
how can i get java to enter/type text into a textbox for me once i select it(click inside it) so the cursor is there. Also how would i get it to send the enter key or other "non-text" keys.
If you want your program to automatically insert text into its Swing/AWT/Whatever Gui then, yes, use a focuslistener then simply use setText (or, if you wish to have one character at a time appear, setText in a loop with a short sleep, just make sure you don't do that on the event thread). If you are talking about having a Java Program insert text into some other program's GUI (such as a website which it sounds like what you are asking), probably not, at least not "easily", and probably not without some sort of native library and JNI. Another possibility for entering into it's own program is to use the Robot class (that will allow it to act as though there were a person sitting there and using the GUI, not just enter text in the text field) Obviously usually only useful for "demos" and/or Games (as a second player, etc).
Edited by masijade because: n/a
mKorbel 274 Veteran Poster
@ ztini & masijade
please to OP to ignore my post, because focusListener works in this case as she/he's expected, there is one ... strange ignorance on 1st. FocuLost, value must always be greater than 1T :
import java.awt.*;
import java.awt.event.*;
import java.math.RoundingMode;
import java.text.NumberFormat;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
public class FormatterLimit {
private JFrame frame = new JFrame();
private JPanel pnl = new JPanel();
private JLabel focusLabel = new JLabel(" focusLost Handle ");
private JFormattedTextField formTextField;
private JLabel docLabel = new JLabel(" document Handle ");
private JFormattedTextField formTextField1;
private NumberFormat formTextFieldFormat;
private double amount = 10000.00;
public FormatterLimit() {
formTextFieldFormat = NumberFormat.getNumberInstance();
formTextFieldFormat.setMinimumFractionDigits(2);
formTextFieldFormat.setMaximumFractionDigits(2);
formTextFieldFormat.setRoundingMode(RoundingMode.HALF_UP);
focusLabel.setFont(new Font("Serif", Font.BOLD, 14));
focusLabel.setForeground(Color.blue);
focusLabel.setPreferredSize(new Dimension(120, 27));
formTextField = new JFormattedTextField(formTextFieldFormat);
formTextField.setValue(amount);
formTextField.setFont(new Font("Serif", Font.BOLD, 22));
formTextField.setForeground(Color.black);
formTextField.setBackground(Color.yellow);
formTextField.setPreferredSize(new Dimension(120, 27));
formTextField.setHorizontalAlignment(SwingConstants.RIGHT);
formTextField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
formTextField.requestFocus();
formTextField.setText(formTextField.getText());
formTextField.selectAll();
}
@Override
public void focusLost(FocusEvent e) {
//Runnable doRun = new Runnable() {
//public void run() {
double t1a1 = (((Number) formTextField.getValue()).doubleValue());
if (t1a1 < 1000) {
formTextField.setValue(amount);
}
//}
//};
//SwingUtilities.invokeLater(doRun);
}
});
docLabel.setFont(new Font("Serif", Font.BOLD, 14));
docLabel.setForeground(Color.blue);
docLabel.setPreferredSize(new Dimension(120, 27));
formTextField1 = new JFormattedTextField(formTextFieldFormat);
formTextField1.setValue(amount);
formTextField1.setFont(new Font("Serif", Font.BOLD, 22));
formTextField1.setForeground(Color.black);
formTextField1.setBackground(Color.yellow);
formTextField1.setPreferredSize(new Dimension(120, 27));
formTextField1.setHorizontalAlignment(SwingConstants.RIGHT);
formTextField1.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
formTextField1.requestFocus();
formTextField1.setText(formTextField1.getText());
formTextField1.selectAll();
}
@Override
public void focusLost(FocusEvent e) {
}
});
formTextField1.getDocument().addDocumentListener(docListener);
pnl = new JPanel();
pnl.setBorder(new EmptyBorder(2, 2, 2, 2));
pnl.setLayout(new GridLayout(2, 2));
pnl.add(focusLabel);
pnl.add(formTextField);
pnl.add(docLabel);
pnl.add(formTextField1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pnl, BorderLayout.CENTER);
frame.setLocation(200, 200);
frame.pack();
frame.setVisible(true);
//formTextFieldFocus();
}
//
private DocumentListener docListener = new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent documentEvent) {
printIt(documentEvent);
}
@Override
public void insertUpdate(DocumentEvent documentEvent) {
printIt(documentEvent);
}
@Override
public void removeUpdate(DocumentEvent documentEvent) {
printIt(documentEvent);
}
private void printIt(DocumentEvent documentEvent) {
DocumentEvent.EventType type = documentEvent.getType();
double t1a1 = (((Number) formTextField1.getValue()).doubleValue());
if (t1a1 < 1000) {
Runnable doRun = new Runnable() {
@Override
public void run() {
formTextField1.setValue(amount);
}
};
SwingUtilities.invokeLater(doRun);
}
}
};
public void formTextFieldFocus1() {
Runnable doRun = new Runnable() {
@Override
public void run() {
formTextField1.requestFocus();
formTextField1.setText(formTextField1.getText());
formTextField1.selectAll();
}
};
SwingUtilities.invokeLater(doRun);
}
public void formTextFieldFocus() {
Runnable doRun = new Runnable() {
@Override
public void run() {
formTextField.requestFocus();
formTextField.setText(formTextField.getText());
formTextField.selectAll();
formTextFieldFocus1();
}
};
SwingUtilities.invokeLater(doRun);
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
FormatterLimit fl = new FormatterLimit();
}
});
}
}
Edited by mKorbel because: n/a
Progr4mmer 0 Junior Poster
ok i realize what i was asking for would be hard and the thing where it types text into itself is needed for a program i have, thanks all
mKorbel 274 Veteran Poster
hmmm, can I ask you how, because your question are vague, and which Listener type you are use for that
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.