Блог пользователя Fefer_Ivan

Автор Fefer_Ivan, 14 лет назад, По-русски

Добрый день, Codeforces.

В этом году я как-то затянул с курсовой. Сделал это зря, потому что сейчас уже все экзамены позади, хочеться отдыхать и все такое. Но победив лень я реализовал все необходимые алгоритмы на Java. Осталось мне только сделать GUI для удобной работы с программой, собрать материал и написать собственно работу. 

Я использую eclipse в качестве среды. Подскажите пожалуйста какой плагин использовать для удобного и быстрого создания интерфейса.

Я уже искал в интернете и наткнулся на множество подобных плагинов. Как выбрать не знаю. 

UPD: скачал и установил плагин 

http://www.instantiations.com/windowbuilder/swingdesigner

Пробная версия на 14 дней. Пока все устраивает.

UPD: Решил переименовать тему, так как у меня появились еще вопросы. )))

2. Как изменить толщину линии в Graphics. 

Ответ нашел сам:

public void paint(Graphics gr){
Graphics2D g = (Graphics2D)gr;
//создаем "кисть" для рисования
BasicStroke pen1 = new BasicStroke(20); //толщина линии 20
g.setStroke(pen1);
g.drawLine(...);

}

3. Как создать regex, который распозновал бы точку?

В частности для того, чтобы сделать по ней split.

Обычно в regex точка - любой символ. По

Пробовал уже и \u002E, и \056. Все время возвращает пустой массив строк.

UPD:

4. У меня созрел еще один вопрос. Даже не знаю как забить его в гугл. Есть изображение в JPEG. Как из JPEG файла создать объект класса BufferedImage я знаю. Теперь мне надо нарисовать этот BufferedImage на JFrame-мя.

Если написать просто

window.getGraphics().drawImage(im, 0, 0, null);,

то изображение нарисуеться, но при первой же перерисовке окна, исчезнет.


UPD:

5. Как изменить размер картинки в BufferedImage?

Целиком задача такая. Есть BufferedImage. Необходимо не меняя маштаба дорисовать сбоку полоску с некой информацией.

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

А что не в NetBeans?

У него там не плохой набор для создания интерфейсов. Сам в нём игрушку делал свою.

14 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
> Как создать regex, который распозновал бы точку?
Специальные символы в регекспах экранируются бэкслешем. При этом в строках Java сам бэкслеш тоже надо экранировать: "\\."
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Спасибо
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Часто использую в олимпиадных задачах regexp "пробел+" .
      А особенностями split я кого-то даже подколол на 20-ом alpha-раунде.
      строчку
      .aaaaaa
      сплит превратит в String[]{"", "aaaaaa"};
      а строчку
      aaaaaa.
      в String[]{"aaaaaa"}
      Меня пытались почеленжить, думая что я split не уберёт лишний разделитель в конце :)
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Предпочитаю перед вызовом split() делать trim(). Или иногда нужно поведение String[]{"", "aaaaaa"}; ? Интересно, в каких случаях?
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          В 20-ом раунде надо было убрать дублирующиеся разделители. делаем split, потом собираем заново. Единственное исключение - если строчка из разделителей, split("/+") вернет пустой массив, надо добавить одну "/"
14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
GUI на Java пишу руками на Swing. Тулзы смотрел - не понравились. Какая-то каша в коде получается, проще руками написать.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
> изображение нарисуеться, но при первой же перерисовке окна, исчезнет.
Ну так рисовать его надо в paintEvent, или как оно там называется.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Есть public метод paint(). Просто переопредели его под свои нужды. Он вызывается при каждом изменении окна.

    Метод public repaint() вызывается для конкретного объекта - кнопки, формы и т.п. для перерисовки по требованию.

    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      В свинге надо переопределять метод paintComponent(Graphics g). Если надо, чтобы прорисовался фон как в стандартном компоненте, то первым делом вызываем super.paintComponent(g), а затем уже занимаемся своей отрисовкой.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

5. Я нашел решение. Оно медленно работает, но для единичного преобразования должно сработать.

BufferedImage newIm = new BufferedImage(X_SIZE + 100, Y_SIZE, im.getType());
Graphics2D newGraph = (Graphics2D)newIm.createGraphics();
  newGraph.drawImage(oldImage, 0, 0, null);