WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Отдельный ЧАВО 2

Отдельный ЧАВО 2


Дата публикации: 17-03-2013

Печать HTML из SWINGа (для java 1.1)

PrintJob pj = getToolkit().getPrintJob(this,"card of VIS",null);
if (pj != null) {
Graphics g = pj.getGraphics();
if (g != null) {
htmlPane.print(g);
g.dispose();
}
pj.end();
}
Вот такой код работает замечательно.


Иконизиpоване фpейма (в пpиложении)

java.awt.Image aton;
aton= java.awt.Toolkit.getDefaultToolkit().getImage("aton.gif");
Frame.setIconImage(aton);

или так

java.awt.Image ico=new java.awt.Toolkit.getDefaultToolkit().getImage("ico.gif");
Frame.setIconImage(ico);
ico.gif - обычный гиф 16х16 пикселей


Новое окно браузера
В классе апплета:


import java.applet.*;
import java.net.*;

...
try
{
URL myURL = new URL("http://localhost"); //Тут ставишь нужный URL
getAppletContext().showDocument(myURL, "_blank");
}
catch (MalformedURLException exp)
{
exp.printStackTrace();
}


Applet+JS

try
{ getAppletContext().showDocument(new
URL("javascript:top.имя_функции();"));}
catch (MalFormedURLException mfurle)
{}
Не зависит от браузера.


Вызов бpаyзеpа из пpиложения
В Виндовс это делается так


Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler http://javapower.da.ru" );


Где можно посмотреть результаты сравнения различных JVM?
А вот тута http://www.volano.com/report.html



Image in Component

Image picture = null;
URL u = null;
try {
u = new URL(codebase, "Picture.gif");
picture = Toolkit.getDefaultToolkit().getImage(u);
} catch (Exception e) {
System.out.println("couldn't create URL for picture");
}
Только codebase нужно самому вызвать.
Или так:


MyPanel.paint( g );

public void paint(Graphics g)
{
Image img;
img = getToolkit().getImage("card.gif");
g.drawImage(img,40,40,this);
}
Список ключей для getProperty()
Все ключи для getProperty()
java.class.path Путь к классам Java
java.class.version Версия классов Java
java.home Путь к каталогу установки Java
java.vendor Производитель Java
java.vendor.url URL производителя
java.version Версия Java
line.separator Разделитель строк
os.arch Архитектура системы
os.name Наименование системы
os.version Версия системы
path.separator Разделитель путей
user.dir Текущая рабочая директория
user.home Домашняя директория
user.name Имя пользователя
file.separator Разделитель файлов в пути
java.compiler Иногда показывает информацию о компиляторе-интерпретаторе
java.vm.name Иногда показывает информацию о виртуальной машине
java.vm.version Иногда показывает ифнормацию о версии вирутальной машины
java.vm.vedor Иногда показывает производителя виртуальной машины
java.runtime.name Иногда показывает наименование рантайма
java.runtime.version Иногда показывает версию рантайма
file.encoding Кодовая страница для файлов
file.encoding.pkg Пакет определяющий кодовую страницу для файлов
Все поля строковые, возвращаются тоже String. Многие из свойств (особенно которые "иногда") сильно зависят от таких факторов, как jdk, vm и др.


Базовые типы данных.

Базовые типы данных
Тип Размер Значение по умолчанию
boolean 8 false
byte 8 0
char 16 x0
short 16 0
int 32 0
long 64 0
float 32 0.0F
double 64 0.0D

Работа с изображением в консольном приложении

Создать Image в консольном приложении можно, напимер, вычитав его из файла

Image x;
x = Toolkit.getDefaultToolkit().getImage("clown.gif"); // загрузка

Или создав off-screen image с заданными размерами. Если у тебя есть программа
в виде апплета, то проще всего ее переделать, создав объект какого-нибудь
класса-компонента (можно java.awt.Frame). У них есть метод CreateImage
и дальше, как по книжкам:

Image p; // буфер для внеэкранного изображения
Graphics i;
p = createImage(200,200); // создание внеэкранного изображения
i = p.getGraphics();
i.setColor(Color.green);
i.fillRect(0,0,200,200); // вывод в буфер (рисование)

Это конечно не единственный путь, но работает. А объект типа Frame пусть тебя
не смкщает - если не писать ...show() ты его не увидишь ;-)



Как опpеделить, доступен ли заданный IP адpес?

Можно попробоват так:


import java.net.Socket;

....

try{

Socket s=new Socket("твой IP-адрес");

System.out.println("HOORAY!!!");

} catch(Exception e){

System.out.println("IP address isn't available");

} // try

Как рисовать поверх html странички

На javascript, как это сделано, можешь посмотреть на

http://www.overmind.kiev.ua/reallyalexpro/snow.shtml
или
http://reallyalexpro.virtualave.net/snow.shtml

Сериализация массива данных собственного типа.

Работающий пример:

=== Cut ===
import java.io.*;

class Result implements Serializable
{
String OsName;
String OsVersion;
String OsArch;

Result( String name, int version, int arch )
{
OsName = name;
OsVersion = String.valueOf(version);
OsArch = String.valueOf(arch);
}

public String toString()
{
return OsName+" v.m "+OsVersion+"."+OsArch;
}
}

public class main
{
public static void main( String args[] ) throws IOException
{
ObjectOutputStream os = new ObjectOutputStream( new
FileOutputStream("aaa.dat") );
Result result[] = new Result[256];
for (int i = 0; i < result.length; i++)
{
result[i] = new Result("MustDie", i / 16, i);
}
os.writeObject(result);
os.close();

// чтение
ObjectInputStream is = new ObjectInputStream( new FileInputStream("aaa.dat")
);
Result res[];
try {
res = (Result[])is.readObject();
} catch (ClassNotFoundException e)
{
System.out.println(e.getMessage());
return;
}
is.close();
for (int i = 0; i < res.length; i++)
System.out.println(res[i]);
}
}
=== Cut ===
Существуют ли в природе сторонние UI компоненты для AWT JDK 1.1?

Посмотри на IBM и особенно на VisualAge Developer Domain( http://www.ibm.com/vadd) и Alphaworks ( http://www.alphaworks.ibm.com ).

IE 5.0 + Swing

Вот как нужно заменить тег applet в стандартном примере, чтобы он заработал в ИЕ50 под управлением сановского плагина









</COMMENT><br /><br />


Русские буквы и знак вопроса.

Почему пpи выполнении скpипта

............


в появляющимся окне все pусские в любых тэгах заменяются на знаки вопpоса?

Тут две проблемы:
1) javascript - была такая же проблема с японским, кстати, и в Netscape, и в IE, и я написал в соответствующие конференции Netscape и Microsoft, получил ответы:
По стандартам, текст в форме _не_ обязан быть в той же кодировке, какая задана для самой страницы, поэтому вообще-то неизвестно, в какой он кодировке.
Решение такой ситуации - разное у разработчиков Netscape и IE:
a) Netscape. Они так решили - будем считать, что кодировкка та, что выбрана как Default. Поэтому Hаташа должна попробовать сделать кириллицу кодировкой по умолчанию -
- View/Character Set/Cyrillic(Windows-1251)
и затем
- View/Character Set/Set Default

б) Internet Explorer.
Они решили по-другому - есть _недокументированная в MSDN_ вещь document.charset и эта строка должна стоять _после_ document.close и _перед_ document.submit, например:

hDoc.write('');
hDoc.write('');
hDoc.close();
hdoc.charset="windows-1251";
hdoc.submit();
У нас там не строка, а переменная, а самое значение задано в самом главной функции.
2) Копирование между Netscape и MS Word, или между любой другой парой Unicode-based программой и той, которая не работает на Unicode.
Это совсем другая проблема и описана (с решением) подробно у меня на странице:
см. раздел "Problem 2" страницы "Office 97 problems": http://www.relcom.ru/English/Russification/WinNetscape/cyr_of97.html

Resize applet

Один из способов динамического изменения размера апплета, работающий в IE и NN, описан в http://www.javaworld.com/javaworld/javatips/jw-javatip80.html

Размеp экpана


=== Hачало test.java ===
import java.awt.*;
public class test {
public static void main(String argv[])
{ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

System.out.println( "Screen size : " + d.width+" X " + d.height);

int r = Toolkit.getDefaultToolkit().getScreenResolution();
int i = (int)Math.floor( 0.5
+ Math.sqrt( Math.pow( d.width / (double)r, 2)
+ Math.pow( d.height / (double)r, 2)));

System.out.println( "Monitor size : " + i + " inch");
System.exit(0);
}
}
=== Конец test.java ===

=== Hачало .command_shell_1 ===
[C:\(WORK)\Java]@prompt epm: $p $g

epm: C:\(WORK)\Java >java test
Screen size : 1024 X 768
Monitor size : 14 inch

epm: C:\(WORK)\Java >
=== Конец .command_shell_1 ===
Local final variables

Как известно, local переменная может быть объявлена как final. А ЗАЧЕМ предусмотрена такая возможность, где это используется?

Чтобы ей можно было пользоваться в локальном классе. Hа самом деле локальные переменные создаются в стеке, а память для объектов классов выделяется в куче. Для обеспечения эффективного доступа значение локальной переменной просто копируется в локальный класс. Естественно, для корректной работы оно не должно меняться. Здесь и нужен final. Аналогичным образом модификатор final используется в параметрах методов.

Как динамически менять jar



/**
* This class loads any classes from jar file.
* for example:
* try {
* JarClassLoader loader = new JarClassLoader("myJarFile.jar");
* MyInterface myInstance =
(MyInterface)loader.findClass("game.server.MyInterfaceImpl.class");
* sayConsoleMessage("Object say: " + myInstance.myMethod());
* } catch(Exception e) { sayConsoleMessage("Error JarClassLoader: " +
e.getMessage()); }
*
*
*/

import java.io.*;
import java.util.*;
import java.util.jar.*;

public class JarClassLoader extends ClassLoader {

// constructor
public JarClassLoader(String jarFile) throws Exception {

super();
jar = new JarFile(jarFile); // open jar file
}

// load an inctance of the class
public Object loadInterfaceImpl(String name) throws Exception {
return loadClass(name, true).newInstance();
}

// load a class def
public Class findClass(String name) {

try {
byte[] b = loadClassData(name);
return defineClass(catClassSufix(name), b, 0, b.length);
} catch (Exception e) {
sayConsoleMessage("Error: " + e.getMessage());
return null;
}
}

// load a class data
public byte[] loadClassData(String name) throws Exception {

name = makePath(name);

// load the class data or other jar's entry
JarEntry entry = jar.getJarEntry(name.toString() + classSufix);
int len = (int)entry.getSize();
BufferedInputStream in = new
BufferedInputStream(jar.getInputStream(entry));
byte[] rc = new byte[len];
if(in.read(rc, 0, len) != len)
return null;

return rc;
}

// private part

// change . to / exclude .class sufix
private String makePath(String name) {

StringBuffer entryName = new StringBuffer(catClassSufix(name));

for(int inx = 0; inx != -1;) {

inx = entryName.toString().indexOf('.');
if( inx != -1)
entryName.replace(inx, inx + 1, "/");
}

return entryName.toString();
}

private String catClassSufix(String name) {

StringBuffer entryName = new StringBuffer(name);
if (entryName.toString().endsWith(classSufix))
entryName = new StringBuffer( // 6 is length of ".class"
entryName.substring(0, entryName.length() - 6));

return new String(entryName.toString());
}

private JarFile jar = null;
private final String classSufix = ".class";
}
Изображение и Xwindows

В XFree86 есть xvfb -- Vritual Framebuffer X-Server, который можно запустить с любым нужным bpp и любым размером экрана (я пускаю Xvfb :1 -screen 1 10x10x32). Линуксячьм jvm этого будет более чем достаточно, а слишком много памяти это не займет.

VAJ и ее HELP

Очено странно, но после третьей переустановки VAJ On-line HELP все-таки заработал(a). Опишу по-порядку свои потуги в в переустановках, возможно кому-то это окажется полезным.
При первой инсталляции VAJ я сменил путь установки с предложенного по-умолчанию "С:\Program Files\IBM\IBMVJava2\" на "D:\Program Files\IBM\IBMVJava2\". К этому моменту у меня был броузер по-умолчанию = Opera 4.02 (в настройках для нее я потом ручками прописал не использовать proxy для адресов: 127.0.0.1 и localhost:49213). По ходу инсталляции выскакивали уже описанные выше ошибки (см. второй цитируемый абзац сверху). Помощь не захотела работать даже и тогда, когда сделал броузером по-умолчанию MSIE 5.5.
Далее установил вручную из подкаталога ntq (был такой в инсталлянте, наряду с setup, lap и backup) NetQuestion в каталог "D:\Program Files\IBM\Imnnq".
Инсталляция прошла нормально. Перезагрузился по требованию программы. Удостоверился что в настройках MSIE стоит "не использовать proxy для адресов: 127.0.0.1;localhost:49213". Попытался вызвать помощь. В ответ на URL: http://localhost:49213/cgi-bin/vahwebx.exe/vahelp/vj32/Extract/0/hgtut.htm броузер отругался уже лаконичной страницей, сообщающей что-то типа: "Объект с именем vj32 не известен справочной системе". Значит справка все-таки начала работать, но не совсем (если можно так выразиться). Hачал искать откуда это выпало сообщение про vj32. Hашел, ссылку в файле "D:\Program Files\IBM\IBMVJava2\doc\ivjhlp.cfg":
HTML_HOSTNAME=localhost:49213
CGI_BIN_DIR=cgi-bin
HELP=D:\IBM\IBMVJava2\eab\help
HELP_EXE=vahwebx.exe
#The following should be changed to something else for a second instance, e.g. vajava3a.
INSTALL_INSTANCE=vj32
#Variables used by the help client code itself
START_NETQ_DAEMON=1
START_LITE_DAEMON=1
START_DBCSNETQ_DAEMON=0
ZIPPED_WEB=1

#Uncomment the following to point to a specific browser:
#HTML_BROWSER="H:\Programs\Netscape\Communicator\Netscape.exe"

HTMLHELP_HIDDEN=1

Попытки изменить значение параметра INSTALL_INSTANCE ни к чему не приводили, справочная система продолжала ругаться на неизвестное ей значение этого самого параметра.
Потом решил не деинсталлируя переустановил VAJ. Система предложила мне либо переустановить то что уже стоит, либо поставить заново VAJ в другое место. Решил переустановить то что есть. Hичего утешительного - ошибок при переинсталляции не возникло, но помощь по-прежнему работать не хотела, ругалась на vj32.
В какой-то WWW-конфе прочитал (на http://java.iba.com.by/javaweb/jforum.nsf/ кажется), что парень точно также как и я мучался, пока не деинсталлировал, и не переинсталлировал заново VAJ в корневой каталог на C: т.е. примерно в "C:\IBMVJava\".
Решил попробовать проделать тот же фокус. Деинсталлировал VAJ, заодно удалив все что осталось после деинсталляции из каталога "D:\Program Files\IBM".
Посмотрел в реестре, вроде явных ссылок не осталось. Убедился что броузер по-умолчанию = MSIE, проверил настройки прокси: "не использовать proxy для адресов: 127.0.0.1 и localhost:49213". Hачал инсталлировать VAJ, указав путь инсталляции "D:\IBM\IBMVAJava2" Все проехало как по-маслу, без ошибок. Причем, в корне на диске D: появился каталог которого раньше не было "D:\IMNnq_NT", вдобавок дирректория с документацией "D:\IBM\IBMVAJava2\Doc\" пополнилась папками, не обнаруживавшимися при прежних инсталляциях VAJ: "vj32udab", "vj32udbj", "vj32udbw" и так далее. Перезагрузился по требованию программы установки, запустил VAJ - а помощь-то РАБОТАЕТ! =8-]
В принципе, там в readme было написано про то что программе установке необходим доступ к корневому каталогу, и про то что сетевое соединение должно быть настроено т.о., чтобы адрес 127.0.0.1 был установлен как локальный и про то что надо настроить свой броузер и т.п., и т.д. Hо так мутно и мало написано... что пришлось как всегда, методом тыка все исследовать.
У меня Win2000, настройки TCP/IP настраиваются автоматически через DHСP. В настройках виндов менять ни чего и не думал даже. Так что ни о каких переустановках NT речи и идти не может - нафиг нужен такой геморрой.

EJB и RollbackException

После прочтения кучи спецификаций и обрамляющей их документации мой взор остановился на документе, который наиболее полно отражает (и в сжатой форме) то, что нужно разработчику. Это Developer Guide:
java.sun.com/j2ee/j2sdkee/devguide1_2_1.pdf.
В нем есть раздел p.63-65 Handling Exceptions, в котором приводится таблица, в каком методе что хандлить. Для ejbStore рекомендуется в случае чего пробрасывать NoSuchEntityException (runtime exception).

PreparedStatment

Вот специально попробовал пример:

=== Cut ===
PreparedStatement stp = conn.prepareStatement("SELECT count(*) FROM
rkc_dokplat WHERE ni = ?");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT DISTINCT ni FROM rkc_dokplat WHERE ni
IS NOT NULL");
while (rs.next())
{
int ni = rs.getInt(1);
stp.setInt(1, ni);
System.out.print("For ni = "+ni+": ");
ResultSet rsp = stp.executeQuery();
while (rsp.next())
{
System.out.println(rsp.getInt(1));
}
rsp.close();
}
rs.close();
st.close();
stp.close();
conn.close();
=== Cut ===
Все работает. Заметь, что PreparedStatment создается всего один раз. Устанавливая разные значения параметра для него, выполняем запрос, ResultSet которого после обработки закрываем.
Конечно, все это можно было сделать одним запросом, так что пример чисто иллюстративный :).
ЗЫ. Тонкий драйвер от 8.1.6 коннектился к Oracle 7.3.4.
Почему мои аплеты запускаются в одном браузере, а в другом не запускаются? Никаких наворотов не использовал.

Скорее всего неправильно прописан сам вызов аплета. Для этого есть даже спициальная программка от Sun-а, называется HTML Converter. Программулька умеет:

1. Конвертить конвертация по шаблонам
2. Шаблонов может быть много, делать их можно самим
3. Может обрабатывать как один файл, так и целую директорию
4. Поддерживаются файлы отката
5. Есть файл протокола
6. Интерфейс коммандной строки
Как сделать наложение GIF-изображений с результатом в java.awt.Image?
Делаешь в виртуальном экране.

Graphics Goff;
Image Imgoff; pic1, pic2;

{
pic1 = getImage(getCodeBase(),"pic1.jpg");
pic2 = getImage(getCodeBase(),"pic2.jpg");
Imgoff = createImage (getSize().width, getSize().height);
Goff = Imgoff.getGraphics();
}

... paint (Graphics g)
{
Goff.drawImage(pic1,0,0,this);
Goff.drawImage(pic2,0,0,this);
g.drawImage(Imgoff,0,0,this);
}
в Imgoff получаешь mix картинок.
Пpи пpи попытке откpытия фоpмы в дизайнеpе VJ++ 6.0 illegal access.
Причины довольно прозаичны - у тебя (с вероятностью 100%) не окончательная версия VJ++, а Preview Release (тот который распространялся с Visual Studio). А он не работает с IE4+ (только с IE4 preview, читай - IE4 beta). Вариантов решения проблемы два:
первый - деинсталировать поставленную версию, найти final release и поставить его (не мешает после этого поставить ещё и последний сервис-пак для Visual Studio);
второй - отказаться от VJ++ и пользоваться другими средствами разработки.

TogetherJ работает как-то медленовато.
Немного можно попытаться увеличить скорость работы пакета путем изменения файла navigator.config, находящегося в директории $TGH/config:
закомментировать строку
VfsNavigator.root.1 = drives
расскоментировать стоку
VfsNavigator.root.2=file("c:/")

Так же можно уменьшить размер памяти с 512 до 256 Мб (если у Вас конечно не 512 Мб ОЗУ), при этом будет уменьшен своп системы. Это можно сделать путем редактирвоания параметра в коммандном файле Together.bat

Так же не рекоммендуется устанавливать JDK или JRE в дирректории с пробелами, как например, Programm files.

В чём глубокое отличие instanceof и Class.IsAssignableFrom(...) ?
Похоже, отличий вообще только два:

1. несущественное отличие.

у операции (A instanceof C)
левый аргумент -- ненулевой обьект либо ненулевой массив,
правый аргумент -- класс, интерфейс либо array-type;
у операции Class.isAssignableFrom() оба аргумента -- классы.

2. у операции (A instanceof C) левый аргумент не может быть значением примитивного типа;
у операции Class.isAssignableFrom() this может быть классом, представляющим собой примитивный тип.

Иногда просто нет экземпляра класса, тогда без Class.isAssignableFrom(class)

Подскажите как связать два апплета на страничке!
1. можно попробовать копнуть в сторону статических регистри



class A extends Applet
{
static java.util.Hashtable registry = new java.util.Hashtable();

public void init()
{
registry.add(getParameter("key"), this);
}

static A getByKey(String key)
{
return (A) registry.get(key);
}

//...
}

Hо -- данное поведение может работать, но является неспецифицированным. Т.е. в следующих версиях бровсеров может исчезнуть. В каких версиях кого это пашет, мне неизвестно.
2. вариант, пашет везде на относительно новых бровсерах. можно из 1 апплета дергать javascript:

Class class1;
try
{
//works in both MSIE and Netscape
class1 = Class.forName("netscape.javascript.JSObject");
}
catch (ClassNotFoundException cex)
{
System.err.println("Error accessing browser javascript engine: " + cex);
class1 = null;
}
if (class1 != null)
{
try
{
JSObject jsobject = JSObject.getWindow(this);
Object result = jsobject.eval("alert('gugu')");
//result can be ignored; it is meaningless
//System.err.println("Result: " + result);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
а из джаваскрипта дергать 2 апплет: Как перевести строку в однобайтовую строку?
Можно сразу в однобайтовый вид строку приводить. Вот небольшая функция, вполне помогает:)))

public static byte[] unicm(String s) {
String abc =
"абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМHОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
byte[] abc1 = {(byte)193, (byte)194, (byte)215, (byte)199,
(byte)196, (byte)197, (byte)214, (byte)218, (byte)201, (byte)202,
(byte)203, (byte)204, (byte)205, (byte)206, (byte)207, (byte)208,
(byte)210, (byte)211, (byte)212, (byte)213, (byte)198, (byte)200,
(byte)195, (byte)222, (byte)219, (byte)221, (byte)223, (byte)217,
(byte)216, (byte)220, (byte)192, (byte)209, (byte)225, (byte)226,
(byte)247, (byte)231, (byte)228, (byte)229, (byte)246, (byte)250,
(byte)233, (byte)234, (byte)235, (byte)236, (byte)237, (byte)238,
(byte)239, (byte)240, (byte)242, (byte)243, (byte)244, (byte)245,
(byte)230, (byte)232, (byte)227, (byte)254, (byte)251, (byte)253,
(byte)255, (byte)249, (byte)248, (byte)252, (byte)224, (byte)241};
byte[] ss = new byte[s.length()];
byte cs[];
int k = 0;
cs = new byte[1];
for (int i = 0; i = 0) {
int j = abc.indexOf(s.charAt(i));
ss[i] = abc1[j];
}
else
ss[i] = (byte)s.charAt(i);
}
return ss;
}
Или же так:

byte[] buf = str.getBytes("KOI8_R");
У меня System.out.println("ДА".equalsIgnoreCase("да")); выдает false!
1) нет поддержки кириллицы в твоей JVM
2) не задана кодировка в момент компиляции
3) Где-то всё таки с кодировками лажа. Это легко проверить, распечатав 16-ричный код символов. Кода должны быть такими: "ДА" - \u0414\u0410 "да" -\u0434\u0430.
4) Ошибка в JVM. Это тоже легко проверить:


if( !"\u0414\u0410".equalsIgnoreCase("\u0434\u0430") )
System.out.println("Send bug report to "+
System.getProperty("java.vendor")+
" ("+ System.getProperty("java.vendor.url")+")");
Обработка курсора хранимой процедуры.
Пример с процедурой с одним выходным параметром-курсором:


callSt = conn.PrepareCall(что-то-там);
callSt.registerOutParameter(1, OracleTypes.CURSOR); // здесь пример для Оракла, как в MS SQL, см. сам, я, увы, не в курсе :(
callSt.execute;
ResultSet rs = (ResultSet)callSt.getObject(1);
while (rs.next()) {
// делаем то, что нужно
}
rs.close();
callSt.close;
Хочу кодировку SAXBuilder-e!
Да он сделан юниксоидами для юниксоидов. За то там есть KOI8_R:) Hо можно научить ручками: org.apache.xerces.readers.MIME2Java:
после строки s_enchash.put("KOI8-R", "KOI8_R");
добавить s_enchash.put("WINDOWS-1251", "Cp1251");
и аналогично после строки s_revhash.put("KOI8_R", "KOI8-R");
добавить s_revhash.put("CP1251", "WINDOWS-1251");

В SWING непонятные глюки - при нажатии кнопки мыши, не происходит перерисовка под ней.
Скорее всего в видеокарте. Попробуй уменьшить Graphics Hardware Acceleration в Windows. Может также помочь установка проперти при запуске на выполнение -Dsun.java2d.noddraw

Платформонезависимый инсталлятор для Java-application?
InstallAnywhere Now!

Hе напомните, как jb4 debug ускорить?
Добавить в в параметрах проекта в строку VM параметр -classic

Как на одной кнопке многострочный текст?
Кратко и легко - использовать JButton и помещать в него HTML код.
Трудно, но без свинга тут.

Вывод картинки в компонент
class CanvasIcon extends java.awt.Canvas {
public java.awt.Image image;
public CanvasIcon(String path) {
super();
image = this.getToolkit().createImage(path);
}
public java.awt.Dimension minimumSize() {
return getMinimumSize();
}
public void paint(java.awt.Graphics g)
{
g.drawImage(image,0,0,this);
}
public java.awt.Dimension preferredSize() {
return new java.awt.Dimension(image.getWidth(this),image.getHeight(this));
}
public void update(java.awt.Graphics g) {paint(g);}
}
И добовляй бъект етого класса как компонент. Только вызывай setVisual(true); к твоему фрейму после того как его собирешь.

Под ИЕ фонт в аплете отображается правильно, но под НН отображается в 8859-1
D файле x:\Program Files\Netscape\Communicator\Program\java\classes\font.properties
ANSI_CHARSET заменить на RUSSIAN_CHARSET

Но работать будет только на этой установке НН.

Хочу запускалку для Java
www.rost.ru/~sergey/JExec - запускалка, с настройками
www.bravozulu.com/ - еще одна запускалка
www.bearcave.com/software/java/comp_java.html - обзоры компиляторов в нативные коды

Динамическая графика в сервлетах
Вот тебе рабочий пример дин. графики. Пользуется ImageIO (скачивается с сана).

import java.io.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
public class MenuItem {
public static void writeImage(OutputStream outstream,String txt,String bgfile)
throws Exception {
BufferedImage bim = ImageIO.read(new File(bgfile));
Graphics2D grp = bim.createGraphics();
grp.setFont(new Font("Tahoma",0,14));
grp.setColor(new Color(40,40,64));
grp.drawString(txt,16,17);
grp.setColor(new Color(255,255,255));
grp.drawString(txt,15,16);
ImageIO.write(bim,"png",outstream);
}
}
Вот код в сервлете. 3 параметр - имя файла на котором пишется надпись.
MenuItem.writeImage(
response.getOutputStream(),
request.getParameter("text"),
application.getRealPath("images/mmi3.png"));
Hе забудь выставить content-type.

А какие кодировки поддерживаются?
Для Java 1.3
Смотрите подробности ванна под натуральный камень тут.
Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 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

Друзья сайта



Случайная цитата

Alan Kay:

"Lisp — это не язык, а строительный материал."

Опрос

Как Вам новый дизайн сайта?

Отлично
Неплохо
Нормальный
Ужасно