В netbeans 8.1 я сделал, чтобы включить папку значков и других изображений, называемых ресурсами внутри папки src в файле проекта. Поэтому всякий раз, когда я создаю Jar-файл, туда входит папка. Дерево файлов должно быть таким:
- src (файлы Java в исходных пакетах здесь)
blockquote> blockquote>
- ** ПАКЕТ, ВЫ НАИМЕНЕНО В ПРОЕКТЕ ** file.java
- Ресурсы image.jpg
Код должен выглядеть следующим образом:
jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));
Mehrdad Afshari ответ добился бы цели, но я нашел его немного слишком подробным для этой простой задачи. Таблицы поиска могут иногда делать чудеса:
void gen_random(char *s, const int len) {
static const char alphanum[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < len; ++i) {
s[i] = alphanum[rand() % (sizeof(alphanum) - 1)];
}
s[len] = 0;
}
void gen_random(char *s, size_t len) {
for (size_t i = 0; i < len; ++i) {
int randomChar = rand()%(26+26+10);
if (randomChar < 26)
s[i] = 'a' + randomChar;
else if (randomChar < 26+26)
s[i] = 'A' + randomChar - 26;
else
s[i] = '0' + randomChar - 26 - 26;
}
s[len] = 0;
}
Я склонен всегда использовать структурированный C++ пути к этому виду инициализации. Заметьте, что существенно, это не отличается, чем решение Altan. Программисту на C++ это просто выражает намерение немного лучше и могло бы быть более легким портативным устройством к другим типам данных. В этом экземпляре, функция C++ generate_n
экспрессы точно, что Вы хотите:
struct rnd_gen {
rnd_gen(char const* range = "abcdefghijklmnopqrstuvwxyz0123456789")
: range(range), len(std::strlen(range)) { }
char operator ()() const {
return range[static_cast<std::size_t>(std::rand() * (1.0 / (RAND_MAX + 1.0 )) * len)];
}
private:
char const* range;
std::size_t len;
};
std::generate_n(s, len, rnd_gen());
s[len] = '\0';
Между прочим, читайте эссе Julienne’s на том, почему это вычисление индекса предпочтено по более простым методам (как взятие модуля).
Я просто протестировал это, это работает сладкое и не требует таблицы поиска. rand_alnum () вид вытесняет буквенно-цифровой индикатор, но потому что это выбирает 62 из возможных 256 символы, это не грандиозное предприятие.
#include <cstdlib> // for rand()
#include <cctype> // for isalnum()
#include <algorithm> // for back_inserter
#include <string>
char
rand_alnum()
{
char c;
while (!std::isalnum(c = static_cast<char>(std::rand())))
;
return c;
}
std::string
rand_alnum_str (std::string::size_type sz)
{
std::string s;
s.reserve (sz);
generate_n (std::back_inserter(s), sz, rand_alnum);
return s;
}