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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ввод типа выставления баллов но со значением, и возможностью ввода только цифр 
V
    Опции темы
_Y_
Дата 13.7.2012, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Не подскажете - наверняка должен где-то лежать контроль, выглядящий как-то так:

user posted image

Т.е. позволяющий вводить числовые значения как кнопками-звездочками, так и с помощью клавиатуры в поле значения. Ну и, конечно, приятно было бы иметь стрелки вверх-вниз для инкрементального изменения.

Точный внешний вид не столь важен - картинку я нарисовал прото для примера, а уж звездочки там или поросята - не важно.

Лень писать код для такого комбинированного ввода - наверняка велосипед уже изобретен многократно.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
dorogoyIV
Дата 17.7.2012, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



не думаю, что бывают такие компоненты.
быстрее сам напишеш.
это не сложно - вот примерчик


Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  _y_.rar 10,10 Kb
PM MAIL   Вверх
_Y_
Дата 17.7.2012, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



dorogoyIV, спасибо, в крайнем случае так и поступлю. Это действительно не сложно.

Но, кажется мне, что очень уж распространенная задача. Не может быть, чтобы код ее не был написан уже раз шестьсот. Собственно, это же обычный ввод в стиле Progress Bar.

Это сообщение отредактировал(а) _Y_ - 17.7.2012, 08:01


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
dorogoyIV
Дата 17.7.2012, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(_Y_ @  17.7.2012,  07:59 Найти цитируемый пост)
Не может быть, чтобы код ее не был написан уже раз шестьсот.

мы по разному думаем  smile 
Java имеет такое выдающееся свойство - как легкое написание любых компонентов.
т.е. все в твоих руках!!!
какой хочешь компонент, такой и делаешь  smile 
PM MAIL   Вверх
_Y_
Дата 17.7.2012, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(dorogoyIV @  17.7.2012,  10:54 Найти цитируемый пост)
какой хочешь компонент, такой и делаешь

Конечно! Но это не особенность Java. Так со всем программированием smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
dorogoyIV
Дата 17.7.2012, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ОК!
видимо, просто для меня написать компонент на джава пара пустяков.
зато я столкнулся с этим в еклипс для андроида... - это полная жопа!!!
нет уж!!! лучше писать в FAR, и компилировать из командной строки!!!
 smile 
PM MAIL   Вверх
dorogoyIV
Дата 18.7.2012, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



для новичков напишу:  smile 
Код

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

public class Main extends JFrame
{
 public Main()
 {
  setLayout(new FlowLayout());

  _Y_Component _y_ =
     new _Y_Component(new File("_Y_/star.png"),
             new File("_Y_/star_selected.png"), 3, 7);
  add(_y_);
//  System.out.println(_y_.getValue());
 }

 public static void main(String [] args)
 {
  SwingUtilities.invokeLater(new Runnable() {
   public void run() {
    Main main = new Main();
    main.setDefaultCloseOperation(3);
    main.setBounds(100, 100, 400, 300);
    main.setVisible(true);}});
 }
}

class _Y_Component extends JPanel
                   implements MouseListener, ChangeListener
{
 private int value, max_value;
 private JSpinner js;
 private SpinnerNumberModel snm;
 private JPanel imgPanel;
 private JLabel [] jl;
 private File img, selectedImg;

 public _Y_Component(File img, File selectedImg, int value, int max_value)
 {
  this.value = value;
  this.max_value = max_value;
  this.img = img;
  this.selectedImg = selectedImg;

  imgPanel = new JPanel(new GridLayout(1, max_value));

  jl = new JLabel [max_value];

  for(int i = 0; i < max_value; i++)
  {
   jl [i] = new JLabel();
   jl [i].setName(i + 1 + "");
   jl [i].addMouseListener(this);
   imgPanel.add(jl [i]);
  }

  setLayout(new BoxLayout(this, BoxLayout.X_AXIS));

  snm = new SpinnerNumberModel(value, 0, max_value, 1);
  js = new JSpinner(snm);

  updateImgPanel();
  add(imgPanel);

  add(js);
  js.addChangeListener(this);

  setPreferredSize(getPrefSize());
 }

 private Dimension getPrefSize()
 {
  int imgHeight = 0;

  for(int i = 0; i < max_value; i++)
  {
   int h = jl [i].getIcon().getIconHeight();

   if(imgHeight < h)
    imgHeight = h;
  }

  int spinnerHeight = js.getPreferredSize().height;
  int maxHeight = Math.max(imgHeight, spinnerHeight);

  int imgPanelWidth = 0;
  int spinnerWidth = js.getPreferredSize().width;

  for(int i = 0; i < max_value; i++)
  {
   int w = jl [i].getIcon().getIconWidth();
   imgPanelWidth += w;
  }
  int maxWidth = imgPanelWidth + spinnerWidth + 20;

  return new Dimension(maxWidth, maxHeight);
 }

 private void updateImgPanel()
 {
  value = Integer.parseInt(snm.getValue().toString());

  for(int i = 0; i < value; i++)
   jl [i].setIcon(new ImageIcon(selectedImg.getAbsolutePath()));

  for(int i = value; i < max_value; i++)
   jl [i].setIcon(new ImageIcon(img.getAbsolutePath()));

  imgPanel.validate();
 }

 public int getValue()
 {
  return value;
 }

 public void stateChanged(ChangeEvent e)
 {
  updateImgPanel();
 }

 public void mouseEntered(MouseEvent e){}
 public void mouseExited(MouseEvent e){}
 public void mousePressed(MouseEvent e){}
 public void mouseReleased(MouseEvent e){}
 public void mouseClicked(MouseEvent e)
 {
  int num = Integer.parseInt(((JLabel)e.getSource()).getName());
  snm.setValue(num);
 }
}

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


Эксперт
***


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

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



dorogoyIV, спасибо. Это, конечно, то, что нужно. Осталось только сделать субкласс специфицированный для конкретного проекта.

Но, честно говоря, неудобно как-то. Я не ожидал, что кто-то будут за меня класс писать. Хотел только спросить нет ли где-то готового. smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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