برای بردن فوکوس بر روری یک شی می تونید از از دستور زیر استفاده کنید :
نام شی.requestFocusInWindow();
در مثال زیر بعد کلیک بر روی دکمه bold ,فوکوس به jtextfield منتقل می شود :
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Focus extends JFrame implements ActionListener {
private JButton btnBold;
private JTextField txtArea;
public Focus() {
init();
panel();
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Focus();
}
public void init() {
btnBold = new JButton("Blod");
btnBold.addActionListener(this);
txtArea = new JTextField(40);
txtArea.addActionListener(this);
}
public void panel() {
setLayout(new GridLayout(2,2));
add(txtArea);
add(btnBold);
}
@Override
public void actionPerformed(ActionEvent e) {
if (btnBold == e.getSource()) {
Font b = new Font("Sans Serif", Font.BOLD, 16);
txtArea.setFont(b);
txtArea.requestFocusInWindow();
}
}
}
import javax.swing.*;
import java.awt.event.*;
public class Focus extends JFrame implements ActionListener {
private JButton btnBold;
private JTextField txtArea;
public Focus() {
init();
panel();
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Focus();
}
public void init() {
btnBold = new JButton("Blod");
btnBold.addActionListener(this);
txtArea = new JTextField(40);
txtArea.addActionListener(this);
}
public void panel() {
setLayout(new GridLayout(2,2));
add(txtArea);
add(btnBold);
}
@Override
public void actionPerformed(ActionEvent e) {
if (btnBold == e.getSource()) {
Font b = new Font("Sans Serif", Font.BOLD, 16);
txtArea.setFont(b);
txtArea.requestFocusInWindow();
}
}
}
به نقل از :java_nith