|
|
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Тема несколько похожа на недавнюю, все еще в топе, тему "Как сравнить int с множеством значений на равенство", но решил отдельно создать. Есть у меня заданный в css список цветов, который вызывается в коде по названию цвета. Используется для раскрашивания таблиц, лейблов, фонов и т.д. Чтобы не вспоминать каждый раз, как правильно написать название цвета, решил создать метод, который возвращает название по номеру. Каким бы способом вы решили такую задачу (значительного роста кол-ва цветов не ожидается, этих за глаза уже) и насколько у меня в коде все плохо? )) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 09:29 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
enum PS: зачем цвета обозхначать номерами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 09:38 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
NixicЧтобы не вспоминать каждый раз, как правильно написать название цвета, решил создать метод, который возвращает название по номеру. Как CSS связан с Java? В современно CSS есть куча способов реюзать стили. http://oocss.org/spec/css-mixins.html NixicКаким бы способом вы решили такую задачу Взял бы любую базу имен и конвертнул https://en.wikipedia.org/wiki/X11_color_names Nixic насколько у меня в коде все плохо? )) Util в имени класса это уже повод задуматься. У вас же Map какой-то, а не Util. Почему мапится int а не RGB? Что за номер вообще? Откуда берется? Почему конструктор публичный? Почему HashMap модифицируемый? Почему ловится NullPointerException ? Почему логирует в System.out? В общем, высокая частота WTF per code line. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 09:49 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Alexey Tominenum PS: зачем цвета обозхначать номерами? Просто мне удобно, нажать контрол+пробел, посмотреть хелп и выбрать номер, нежели писать "paleOrangeYellow" и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 09:58 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
так-то вот сейчас подумал, нафига оно вообще надо, действительно. сейчас как происходит: к примеру раскрашивание таблицы productTable.setCellStyleGenerator(new Table.CellStyleGenerator() {... if (что-то там с данными) { return "green"; } и т.д. по цветам, в зависимости от данных, красится в какой-нибудь цвет. Просто бывают сложные условия и просто забываешь список цветов, которые вообще есть, вот хотел в хелп по методу заглядывать и выбирать цвет соответствующий цифре. С другой стороны код получается странный, придется каждый раз смотреть, что же означает 13 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 10:02 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Переписал немного. Остались вопросы, как использовать enam, чтобы не по названию цвета брать название, а по какой-нибудь короткой константе, например по тому же номеру. Номера берутся из головы, по порядку, до 20 я считать умею)) По поводу модифицируемости HashMap, я не понял (( Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 10:48 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
а все понял, поставил статик private static final HashMap<Integer, String> hashmap = new HashMap<>(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 10:51 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Вся эта чехарда с переводом цветов началась с того, что в JasperReport в шаблон jrxml, если быть точнее, нельзя передать цвет параметром, так, чтобы фон ячеек был абсолютно любого цвета. Изначально я работал с RGB и с Hex, можно было выбирать любой цвет из палитры, он в системе красил фон текста, но в экселе даже в 10 или какой он там сейчас *.xlsx формат, даже в нем нет поддержки выделения фона текста аля html, только сам текст можно покрасить и фон всей ячейки. Сколько я не рыл инет по поводу передачи цвета фона ячейки в джаспер через параметр, найти не смог. Пишут, что такое невозможно и предлагают использовать стили, вот по параметру стиль можно выбрать, у стиля в iReport можно выбрать фон ячейки, причем любой hex, а передать в стиль из кода нельзя. В общем попа с этими цветами, а надо чтобы и в системе и в отчетах цвета совпадали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 11:02 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Некоторым претит использовать ordinal. Тогда можно добавить конструктор. Но я особого смысла не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 12:06 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Или так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 12:07 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:25 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ой. name() же я забыл добавить чтобы в String привести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 14:49 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
NixicAlexey Tominenum PS: зачем цвета обозхначать номерами? Просто мне удобно, нажать контрол+пробел, посмотреть хелп и выбрать номер, нежели писать "paleOrangeYellow" и т.д. а почему бы цвет константой не задать? Код: java 1. 2. 3. IDE тебе автокоплитом поможет, и искать использования легче будет, и хелп читать не надо. Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 15:06 |
|
||
|
Покритикуйте метод для внутренних нужд
|
|||
|---|---|---|---|
|
#18+
Да. Все, проблему решил, пока что на бумаге/в голове :) C enum не связывался никогда, теперь буду знать, если понадобится, буду использовать. Наверное перепишу сейчас так, чтобы на самом деле методом вызывался цвет как pavel_nv подсказал. Потому что в джаспер все-равно hex просто так не передать, а переписывать отчет с использованием JRDesignTextField и JRDesignStyle вообще не хочется, да еще не факт, что сработает. Придется перейти к заданному изначально списку цветов и добавить в джаспер условия. Оказалось, в джасперРепорте есть ConditionalStyle, добавляется к одному из стилей. А в java коде уже, в зависимости от данных можно передать параметр, через тот же JRField, к примеру, который в отчете на листе не отображать. Осталось: Прописать варианты цветов в scss, потому что в Vaadin (а именно он используется) свои стили нужно добавлять через scss. На счет mixins, я с ним не знаком, так что пока не припрет совсем, лезть туда не буду :) В отчет *.jrxml добавить все 23 стиля (в другие отчеты потом копировать). В java коде прописать когда, какие цвета (строковый параметр, аля "red" и т.д.) отправлять в джаспер. Написать отдельный класс с окном, в котором пользователь будет щелкать и выбирать цвет из предложенных, чтобы "покрасить", в частности (пока что) строку в таблице. Попробовал цвета, передаются, красятся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 16:49 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39312586&tid=2123697]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 433ms |

| 0 / 0 |
