Ознакомьтесь с идеями в Исследовательских лабораториях Mu Dynamics - Архив блога . Я нашел это в начале этого года - я забыл точный контекст, где я столкнулся с ним, - и адаптировал его в этот код. Мы можем обсудить достоинства добавления E на фронт; он применим к конкретной проблеме, но не является частью общего решения. Я спрятал это в своей папке «Виньетки», где я оставляю интересные фрагменты кода в случае, если я захочу их позже. Я смущен, чтобы сказать, что я не помню, откуда эта идея появилась в то время.
Заголовок: paste1.h
/*
@(#)File: $RCSfile: paste1.h,v $
@(#)Version: $Revision: 1.1 $
@(#)Last changed: $Date: 2008/05/17 21:38:05 $
@(#)Purpose: Automated Token Pasting
*/
#ifndef JLSS_ID_PASTE_H
#define JLSS_ID_PASTE_H
/*
* Common case when someone just includes this file. In this case,
* they just get the various E* tokens as good old enums.
*/
#if !defined(ETYPE)
#define ETYPE(val, desc) E##val,
#define ETYPE_ENUM
enum {
#endif /* ETYPE */
ETYPE(PERM, "Operation not permitted")
ETYPE(NOENT, "No such file or directory")
ETYPE(SRCH, "No such process")
ETYPE(INTR, "Interrupted system call")
ETYPE(IO, "I/O error")
ETYPE(NXIO, "No such device or address")
ETYPE(2BIG, "Arg list too long")
/*
* Close up the enum block in the common case of someone including
* this file.
*/
#if defined(ETYPE_ENUM)
#undef ETYPE_ENUM
#undef ETYPE
ETYPE_MAX
};
#endif /* ETYPE_ENUM */
#endif /* JLSS_ID_PASTE_H */
Пример источника:
/*
@(#)File: $RCSfile: paste1.c,v $
@(#)Version: $Revision: 1.2 $
@(#)Last changed: $Date: 2008/06/24 01:03:38 $
@(#)Purpose: Automated Token Pasting
*/
#include "paste1.h"
static const char *sys_errlist_internal[] = {
#undef JLSS_ID_PASTE_H
#define ETYPE(val, desc) desc,
#include "paste1.h"
0
#undef ETYPE
};
static const char *xerror(int err)
{
if (err >= ETYPE_MAX || err <= 0)
return "Unknown error";
return sys_errlist_internal[err];
}
static const char*errlist_mnemonics[] = {
#undef JLSS_ID_PASTE_H
#define ETYPE(val, desc) [E ## val] = "E" #val,
#include "paste1.h"
#undef ETYPE
};
#include
int main(void)
{
int i;
for (i = 0; i < ETYPE_MAX; i++)
{
printf("%d: %-6s: %s\n", i, errlist_mnemonics[i], xerror(i));
}
return(0);
}
Не обязательно самое чистое использование C-процессором в мире - но это не позволяет записывать материал несколько раз.
Создайте свой графический интерфейс с помощью Netbeans. скопируйте файл Eclipse .project (как показано ниже) в папку проекта и измените MyProjectName. Откройте Eclipse и импортируйте проект в свое рабочее пространство, чтобы вы могли открыть проект из рабочего пространства Eclipse с помощью Netbeans. Теперь вы можете использовать Netbeans для создания и изменения графического интерфейса и редактирования кода с помощью Eclipse.
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MyProject</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
MyEclipse предлагает интеграцию редактора GUI Netbeans (Matisse) с Eclipse.
См. http://www.myeclipseide.com/module-htmlpages-display-pid-5.html
Повторение @Tom, я использовал бы внешний инструмент сборки (Знаток 2 будет моим выбором). Я сделал это на проектах прежде и, пока Вы не идете на всем протяжении.Xxxx файлов и папок Eclipse, Вы будете в порядке. Тогда Вы получаете полную мощность Netbeans (который интегрируется со Знатоком 2 действительно приятно), или Eclipse, и также имейте добавленную стоимость внешней сборки, которая может также быть выполнена Вашим инструментом CI. Все побеждают!
Cloud-Garden делает редактора GUI вызванным Jigloo, который довольно хорош, если Вы в такую вещь (и цена очень, очень разумна). Если бы это - все, что это пропускает для Вас от Eclipse, я рекомендовал бы смотреть. Netbeans делает тонну материала с исходным кодом, который Нельзя отредактировать, и т.д.
Еще одна вещь, которую я упомяну: Я использовал редакторов GUI как Matisse и Jigloo для супер быстрого прототипирования. Однако в рамках 3 или 4 повторений, я всегда роняю для вручения кодирования разметок. Я также нахожу, что, когда я делаю быстрое прототипирование, я почти всегда более продуктивен, когда я изменяю менеджера по расположению на абсолют и просто помещаю компоненты. Как только дизайн запускает гель, реализовывая дизайн кодирования руки с помощью менеджера по наглядности (я настоятельно рекомендую Расположение МиГа ), довольно легко, и дает намного лучшие результаты.
я знаю, что перетаскивание расположения GUI действительно соблазнительно - но Расположение МиГа невероятно продуктивно для графический интерфейсов пользователя проводного соединения руки, и я подозреваю, что почти любой разработчик будет более продуктивным в течение недели, спускаясь по тому пути.
Определите свои зависимости проекта со Знатоком и используйте его для генерации конфигурационных файлов проекта и для Netbeans и для Eclipse.
Попытка разделить каталоги классов для Eclipse и Netbeans, так как Eclipse не нравится он, когда внешние инструменты касаются его классов.
Несколько глюков:
Другая подсказка - то, что можно создать Бобы Java с помощью Eclipse и перетащить их в редактора Matisse. Это позволяет Вам создавать пользовательский компонент графического интерфейса пользователя или некомпонент графического интерфейса пользователя (модели, слушатели, и т.д.) и добавлять его к форме Matisse. Со слушателями и моделями, можно определить компонент для использования экземпляра пользовательского слушателя/модели вместо поведения по умолчанию. Можно также перетащить в пользовательских компонентах графического интерфейса пользователя и управлять ими как любой другой виджет GUI.
импортировать проект в netbeans создать графический интерфейс, а затем снова открыть проект в eclipse
, он работает без ошибок
Для меня использование связанных исходных папок работает достаточно хорошо .
Я создаю графические интерфейсы пользователя в независимых проектах NetBeans - если им нужны простые классы или интерфейсы, я использую «источник ссылки» (щелкните правой кнопкой мыши проект в NetBeans, выберите свойства), чтобы включить их в проект NetBeans.
Мои основные проекты находятся в затмении. Здесь я снова использую функцию источника ссылок для связи с проектом NetBeans (щелкните правой кнопкой мыши проект в eclipse, выберите «путь сборки», затем «источник ссылки»).
РЕДАКТИРОВАТЬ (Thx to Milhous :)): в обоих проектах в eclipse и NetBeans, кроме того, все необходимые файлы JAR необходимо добавить в путь сборки (также библиотеки, добавленные NetBeans: например, beansbinding-1.2.1.jar, appframework -1.0.3.jar swing-worker-1.1.jar, ...)
Теперь классы GUI можно повторно использовать в eclipse. Также приводит к необходимости разделить классы графического интерфейса и логики, что не может быть ничего плохого.