В разобранной программе мы существенно использовали пакет SWING, который появился в Java2, начиная с версии 1.2.0. Интересно, а можно ли прокомпилировать программу с компилятором версии 1.2.2, который до сих пор можно скачать с сайта Java. Оказывается, что в исходном виде - нельзя, так как в нескольких местах использовались возможности, появившиеся в более поздних версиях. Но если слегка модифицировать код, отказавшись от этих возможностей, то можно. Более того, в рассмотренной программе использование более поздних версий совсем не требуется и было сделано просто для ознакомления с полезными классами.
Итак рассмотрим по порядку что следует изменить. Во-первых, содержание командного (batch) файла для компиляции программы с выводом диагностики в файл следует изменить на указанное ниже
set path=c:\jdk122\bin;%path% javac.exe -Xstdout First.java > diag.txt pause |
В первом классе (First) надо строку
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
mf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); |
Во втором классе (MainForm) следует поменять код
fn="icon.png"; BufferedImage bi = javax.imageio.ImageIO.read(new File(fn)); setIconImage(bi); |
fn="icon.gif"; setIconImage(new ImageIcon(fn).getImage()); |
Далее, следует исключить строку
deskt.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); |
В файле runPro, в классе MainPro надо снова заменить имя файла "icon.png" на "icon.gif", а в классе imagFrame надо заменить следующий код
try{big = javax.imageio.ImageIO.read(fs);} catch(IOException ex){ex.printStackTrace();} Image im = big; ImageIcon img = new ImageIcon(im); lab = new JLabel(img); |
ImageIcon img = new ImageIcon(fn); lab = new JLabel(img); |
Это все изменения. Теперь программа прокомпилируется с компилятором версии 1.2.2. Единственное замечание. Этот компилятор предупреждает, что мы использовали класс MainForm в другом файле, а он не описан как public. Но это только предупреждение, реально все нормально работает. Компилятор версии 1.4.2 уже не делает таких предупреждений.
Вот и закончилась первая серия моих лекций, в которой вы научились оформлять внешний вид программы в виде головного окна с меню. Такой вид имеют много программ, но не все. Кроме того, за бортом осталось огромное количество готовых классов виртуальной машины Java, которые позволяют сразу получать решение многих проблем без собственного программирования. Чем больше готовых классов вы используете, тем короче будет ваша программа и тем проще будет передавать ее по электронной почте или скачивать из интернета. Так как установка виртуальной машины все равно необходима и делается только один раз, как дополнение к вашей операционной системе, то использование готовых классов не только облегчает программирование, но и уменьшает размер программы. В следующих сериях я попробую в таком же стиле описать некоторые другие классы JVM из тех, которые я сам знаю. Увы все классы описать невозможно, да видимо полное число классов вообще мало кто знает. На каком-то этапе необходимо научиться пользоваться API или прямым кодом классов. Специфика Java технологии в ее полной открытости. Код всех классов доступен разработчику. Так что следите за новостями на моем сайте vkacl.narod.ru. А пока до свидания и успехов !