final JTextField tf = ...; final JButton button = ...; int start = ...; int end = ...; button.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ tf.setSelectionStart(start); tf.setSelectionEnd(end); } });
start=...?3点代表声明 我试过了 还是不行
... 意思你这里该是你写的代码。你选择的区域,比如 int start = 2; int end = 5;
import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument;public class Example { public static void main(final java.lang.String[] args) { java.awt.EventQueue.invokeLater(new java.lang.Runnable(){ @Override public void run(){ JFrame frame = new JFrame("Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); Box container = Box.createVerticalBox(); Box top = Box.createHorizontalBox(); Box bottom = Box.createHorizontalBox(); final JTextField input = new JTextField(); final JTextField from = new JTextField("0",3); from.setDocument(new HereDocument(input)); final JTextField to = new JTextField("1",3); from.setDocument(new HereDocument(input)); final JButton select = new JButton("Select"); final JLabel status = new JLabel("Selected Text:"); select.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ input.setSelectionStart(Integer.parseInt(from.getText())); input.setSelectionEnd(Integer.parseInt(to.getText())); status.setText(String.format("Selected Text: %s",input.getSelectedText())); input.requestFocusInWindow(); } }); top.add(new JLabel("Input:")); top.add(Box.createHorizontalStrut(3)); top.add(input); bottom.add(select); bottom.add(Box.createHorizontalStrut(5)); bottom.add(new JLabel("From:")); bottom.add(Box.createHorizontalStrut(3)); bottom.add(from); bottom.add(Box.createHorizontalStrut(5)); bottom.add(new JLabel("To:")); bottom.add(to); container.add(top); container.add(Box.createVerticalStrut(5)); container.add(bottom); container.add(Box.createVerticalStrut(5)); container.add(status); container.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); frame.setContentPane(container); frame.pack(); frame.setVisible(true); } }); } private static class HereDocument extends PlainDocument { private JTextField input; public HereDocument(JTextField input){ this.input = input; } @Override public void insertString(int offset, String s, AttributeSet as) throws BadLocationException { if (s.matches("[0-9]*") && ((getLength()+s.length()) <= input.getText().length())) { super.insertString(offset,s,as); }else { return; } } } }
final JButton button = ...;
int start = ...;
int end = ...;
button.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent e){
tf.setSelectionStart(start);
tf.setSelectionEnd(end);
}
});
int start = 2;
int end = 5;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;public class Example {
public static void main(final java.lang.String[] args) {
java.awt.EventQueue.invokeLater(new java.lang.Runnable(){
@Override public void run(){
JFrame frame = new JFrame("Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null); Box container = Box.createVerticalBox();
Box top = Box.createHorizontalBox();
Box bottom = Box.createHorizontalBox(); final JTextField input = new JTextField(); final JTextField from = new JTextField("0",3);
from.setDocument(new HereDocument(input));
final JTextField to = new JTextField("1",3);
from.setDocument(new HereDocument(input));
final JButton select = new JButton("Select");
final JLabel status = new JLabel("Selected Text:"); select.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent e){
input.setSelectionStart(Integer.parseInt(from.getText()));
input.setSelectionEnd(Integer.parseInt(to.getText()));
status.setText(String.format("Selected Text: %s",input.getSelectedText()));
input.requestFocusInWindow();
}
}); top.add(new JLabel("Input:"));
top.add(Box.createHorizontalStrut(3));
top.add(input); bottom.add(select);
bottom.add(Box.createHorizontalStrut(5));
bottom.add(new JLabel("From:"));
bottom.add(Box.createHorizontalStrut(3));
bottom.add(from);
bottom.add(Box.createHorizontalStrut(5));
bottom.add(new JLabel("To:"));
bottom.add(to); container.add(top);
container.add(Box.createVerticalStrut(5));
container.add(bottom);
container.add(Box.createVerticalStrut(5));
container.add(status);
container.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
frame.setContentPane(container); frame.pack();
frame.setVisible(true);
}
});
}
private static class HereDocument extends PlainDocument {
private JTextField input;
public HereDocument(JTextField input){
this.input = input;
} @Override public void insertString(int offset, String s, AttributeSet as)
throws BadLocationException {
if (s.matches("[0-9]*") && ((getLength()+s.length()) <= input.getText().length())) {
super.insertString(offset,s,as);
}else {
return;
}
}
}
}