Ответы пользователя по тегу Интерфейс пользователя
  • Почему в большинстве интерфейсов появление элементов плавное, а исчезание мгновенное?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Это делается из соображений эргономичности, т.к. наше зрение "заточено" под лучшее распознавание именно движущихся объектов. Соответственно, когда появляются новые объекты, внимание пользователя желательно направить именно на них (т.к. вероятнее всего, они появились для того, чтоб с ними что-то сделать). Ну, а при исчезновении элементов, наоборот - внимание нужно как можно быстрее "освободить".
    На заре Ajax вспомнили про этот феномен, когда столкнулись с той проблемой, что в одностраничных интерфейсах, если новые данные появлялись слишком быстро, пользователь их просто не замечал. Тогда даже тренд такой появился - цеплять на области с обновившимися данными какой-нибудь визуальный эфект (анимацию, мигание и т.д.), чтоб привлечь внимание пользователя.
    Ответ написан
    Комментировать
  • Как в java swing получить картинку из массива?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    С какими именно цифрами? В какое изображение? И самое главное - при чем тут вообще Swing?

    Если под "цифрами" подразумевается массив байт, содержащий, например, закодированное в JPEG изображение, которое хочется поиметь в ImageIcon (кажущаяся мне наиболее вероятной интерпретация вопроса в контексте Swing), то, например, вот так:
    byte[] arBytes;
    ...
    ImageIcon icon = new ImageIcon(arBytes);

    или так:
    BufferedImage image = ImageIO.read(new ByteArrayInputStream(arBytes));

    Если же цифры - действительно цифры, то тут, увы, нет иного способа "получить картинку", иначе как взять, да и отрисовать их на канвасе, например, вот так :
    int[] arInts = {0,1,2,3,4,5,6,7,8,9};
    ...
    BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = img.createGraphics();
    g2d.setPaint(Color.red);
    g2d.setFont(new Font("Serif", Font.BOLD, 18));
    FontMetrics fm = g2d.getFontMetrics();
    int x = 5;
    for(int i : arInts){
        String s = (new Integer(i)).toString();    
        g2d.drawString(s, x, 5);
        x += fm.stringWidth(s) + 5;
    }
    g2d.dispose();
    Ответ написан
    Комментировать