Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Как фокусировать Swing компонент?


Автор: Microsoft 13.2.2011, 10:41
Может идиотский вопрос, но я не могу никак установить фокус на конкретный Swing-компонент (кнопку JButton)! Разве что запретить setFocusable(false); во всех кроме необходимого. requestFocus(); не работает.

Автор: dorogoyIV 13.2.2011, 13:16
Цитата(Microsoft @  13.2.2011,  10:41 Найти цитируемый пост)
requestFocus(); не работает.

работает
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class Test extends JFrame
                  implements ActionListener
{
 JPanel jp = new JPanel();

 public Test()
 {
  setDefaultCloseOperation(3);
  setBounds(100, 100, 400, 300);

  JButton jb = new JButton("request focus");
  jb.addActionListener(this);
  add(jb, "South");

  jp.add(new JButton("button 1"));
  jp.add(new JComboBox(new Object [] {1, 2, 3}));
  jp.add(new JButton("button 2"));
  add(jp);
 }

 public void actionPerformed(ActionEvent e)
 {
  requestingFocus();
 }

 private void requestingFocus()
 {
  Component [] comps = jp.getComponents();
  int r = new Random().nextInt(comps.length);

  comps [r].requestFocus();
 }

 public static void main(String [] args)
 {
  SwingUtilities.invokeLater(new Runnable()
  {
   public void run()
   {
    new Test().setVisible(true);
   }
  });
 }
}

Автор: Connie 16.2.2011, 10:48
вообще рекомендовано использовать requestFocusInWindow() 
http://download.oracle.com/javase/6/docs/api/java/awt/Component.html#requestFocus()
Цитата

Because the focus behavior of this method (requestFocus()) is platform-dependent, developers are strongly encouraged to use requestFocusInWindow when possible.

Автор: Microsoft 16.2.2011, 22:19
Спасибо. Все работает.

Автор: Microsoft 31.3.2011, 01:25
Никто так и не упомянул важную деталь: просить фокус можно только когда компонент уже отображен на экране! Вот так... Почему непонятно 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)