Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить курсор, Без помощью Tab! 
:(
    Опции темы
KISha
Дата 6.8.2008, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 31.12.2007

Репутация: нет
Всего: нет



Помогите please !!!
Как можно изменить позиция курсора из одного компонентов на другой?
например при нажатие клавиша вниз. позиция курсора  должно моргать над другую (следующий) компонентов, (без помощью Tab )

PM MAIL   Вверх
SaSho
Дата 6.8.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.6.2007
Где: Днепропетровск

Репутация: 1
Всего: 3



Если речь идёт о текстовых полях, то можно использовать методы requestFocus() / requestFocusInWindow() целевого компонента
PM MAIL ICQ Jabber   Вверх
KISha
Дата 8.8.2008, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 31.12.2007

Репутация: нет
Всего: нет



SaSho 
у меня все компоненты не текстовой в среди есть JButton, JComboBox, JTable, JList и т.д
PM MAIL   Вверх
SaSho
Дата 8.8.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.6.2007
Где: Днепропетровск

Репутация: 1
Всего: 3



Ну так а что мешает вызывать методы requestFocus() / requestFocusInWindow() этих компонентов?
PM MAIL ICQ Jabber   Вверх
dorogoyIV
Дата 8.8.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



вопрос скорее по GUI.

еще есть такой вариант: (нажимай стрелку вниз)
Код

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

public class MoveFocus extends JFrame
                       implements KeyListener
{
 JButton jb = new JButton("button");
 JComboBox jcb = new JComboBox(new Object [] {1, 2, 3});
 JList list = new JList(new Object [] {1, 2, 3});

 public MoveFocus()
 {
  setLayout(new FlowLayout());

  add(jb);
  list.setSelectedIndex(0);
  add(list);
  add(jcb);

  Component [] comps = getContentPane().getComponents();
  for(int i = 0; i < comps.length; i++)
   comps [i].addKeyListener(this);
 }

 public void keyPressed(KeyEvent e)
 {
  try
  {
   Robot r = new Robot();

   if(e.getKeyCode() == 40)
    r.keyPress(KeyEvent.VK_TAB);
  }
  catch(Exception ex){/**/}
 }
 public void keyReleased(KeyEvent e){}
 public void keyTyped(KeyEvent e){}

 public static void main(String [] args)
 {
  JFrame f = new MoveFocus();
  f.setBounds(100, 100, 400, 300);
  f.setDefaultCloseOperation(3);
  f.setVisible(true);
 }
}

только если на форме JTable или JList - надо будет переопределять их евенты.

PM MAIL   Вверх
SaSho
Дата 8.8.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.6.2007
Где: Днепропетровск

Репутация: 1
Всего: 3



Я имел ввиду вот что.
Привожу код, написанный "на коленке":

Код

package bai.test.swing;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.*;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author жжот
 * @version 1.0
 */
public class TestFocusFrame extends JFrame {
  
  JComponent[] components = null;
  
  public TestFocusFrame() {
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);    
    // компоненты:
    JButton button = new JButton(" Test button ");
    JTextField textField = new JTextField();
    JFormattedTextField formattedTextField = new JFormattedTextField();    
    JComboBox comboBox = new JComboBox(new Object[]{"One", "Two", "Three"});

    components = new JComponent[]{
        textField, button, formattedTextField, comboBox
    };

    this.getContentPane().setLayout( new BoxLayout( this.getContentPane(),
                                                    BoxLayout.Y_AXIS ) );   
    this.getContentPane().add( Box.createVerticalStrut(10) );        
    this.getContentPane().add( textField );
    this.getContentPane().add( Box.createVerticalStrut(10) );            
    this.getContentPane().add( button );    
    this.getContentPane().add( Box.createVerticalStrut(10) );            
    this.getContentPane().add( formattedTextField );        
    this.getContentPane().add( Box.createVerticalStrut(10) );            
    this.getContentPane().add( comboBox );        
        
    /**
     * Слушатель. При нажатии заданной клавиши определяет владельца фокуса, его
     * индекс в списке компонентов и, в случае успеха, передаёт фокус 
     * след. элементу в списке
     */
    KeyListener listener = new KeyAdapter() {
  
      public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == 40) {
          // определяем владельца фокуса:
          java.awt.Component focusOwner = FocusManager.getCurrentManager().
              getFocusOwner();
          int index = 0; // индекс владельца фокуса
          for (; index < components.length && focusOwner != components[index];
               index++) {}

          if (index < components.length) {         // проверка был ли найден элемент в списке
            final int nextCompIndex =              // индекс след.компонента
                (index == components.length - 1) ? // если текущий владелец фокуса - последний в списке
                0 :                                // перейти к первому элементу (с индексом 0)
                ++index;                           // иначе - индекс текущего + 1
            
            SwingUtilities.invokeLater(new Runnable() {
              public void run() {
                // передача фокуса:
                components[nextCompIndex].requestFocus();
              }
            });
          }
  
        }
  
      }
    };
    
    // назначаем слушатель всем компонентам:
    for (JComponent component : components){
      component.addKeyListener( listener );
    }
    
    this.setVisible( true );
    this.pack();
  }

  public static void main(String[] args) {
    TestFocusFrame testfocusframe = new TestFocusFrame();
  }
}






При необходимости использовать в реальной жизни можно усовершенствовать (например, держать карту тек.компонент - след.компонент, что позволит не производить каждый раз поиск перебором по массиву компонентов).

Это сообщение отредактировал(а) SaSho - 8.8.2008, 18:23
PM MAIL ICQ Jabber   Вверх
SaSho
Дата 8.8.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.6.2007
Где: Днепропетровск

Репутация: 1
Всего: 3



Удалено.
*Блин, чего мои посты добавляются по 2 раза?..

Это сообщение отредактировал(а) SaSho - 8.8.2008, 18:19
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1390 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.