Логин:   Пароль:






Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100
Rambler's Top100

Java: Вопрос-ответ

В данном разделе собраны самые часто задаваемые и интересные вопросы из рассылки Java programming.


Страницы:

Вопрос: Чем апплет отличается от простого приложения?

Ответ: Приложения это самостоятельные программы, а апплеты это программы работающие под управлением других программ, обычно под управлением Web-броузеров. Помимо этого на апплеты налагаются некоторые ограничения, т.е. ограничивается доступ к ресурсам из апплета. Это делается из соображения безопасности.

Вопрос: Будьте так добры подскажите мне как создать, в процессе выполнения программы, два обработчика событий на нажатие кнопки мыши и поочерёдно их менять.

Ответ:

MouseListener MouseL1;
MouseListener MouseL2;
MouseL1=new MouseAdapter() {
public void mouseClicked(MouseEvent e){ Какие либо действия1} };
MouseL2=new MouseAdapter()  { 
public void mouseClicked(MouseEvent e){ Какие либо действия2}};

JButton b= new JButton("Hello");
 b.addMouseListener(MouseL1);
если надо заменить MouseL1 на MouseL2 делаем следующие:
b.removeMouseListener(MouseL1);
b.addMouseListener(MouseL2);

Вопрос: Как из программы на Java запустить другую программу?

Ответ:

Runtime r = Runtime. getRuntime();
Process p = null;
String cmd[] = {"notepad.exe"};
try {p = r.exec(cmd);}
catch (Exception ee) {}

Вопрос: Возможна ли в Java перегрузка операторов?Если да, то как это можно сделать?

Ответ: Java не поддерживает перегрузки операторов. Разработчики просто не сочли эту возможность достаточно важной, но перегрузка методов в Java осталась.

Вопрос: Перечислите события мышки?

Ответ:

protected MouseListener sMouseL;
protected MouseMotionListener sMouseML;
sMouseL=new MouseAdapter()
{
public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseClicked(MouseEvent e){} }; sMouseML= new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e){} public void mouseDragged(MouseEvent e){} };

Вопрос: Я слышал что существуют процессоры с вшитой виртуальной машиной Java, так ли это?

Ответ: Да действительно была предпринята аппаратная разработка JVM, для увеличения быстродействия Java-программ. Но Java-процессор не оправдал возлагавшихся на него ожиданий по резкому увеличению быстродействия. Да и существование такого процессора ставит под сомнение статус языка Java, как универсального языка.

Вопрос: Как можно организовать Drag'n'drop в Java?

Ответ: Вот два примера:
Пример 1
Пример 2

Вопрос: Когда создается stub-объект к удаленному (skeleton) объекту в RMI, как система реагирует на обрыв связи между клиентом и сервером? Создает ли она новый объект или пытается работать с уже созданным?

Ответ: При обрыве связи генерируется исключение:

exception: 
  java.rmi.UnmarshalException: 
    Error unmarshaling return header; nested
exception is:
  java.net.SocketException: Connection reset by peer: 
    JVM_recv in socket input stream read

При создании объекта все действия заключены в блоке try {} catch (Throwable e) {} и при генерации любого исключения мы выходим за пределы блока. Это явно повлечёт за собой создание нового объекта, так как за приделами блока объект нам не доступен.

Вопрос: Расскажите пожалуйста как в Java при обработке событий мыши можно различать какая кнопка мыши нажата (правая или левая), и можно ли по отдельности обрабатывать события от этих кнопок?

Ответ:


public void mousePressed(MouseEvent e)
{
 if (e.getModifiers()==e.BUTTON1_MASK)
 {
  //Какое либо действие
 }
 if (e.getModifiers()==e.BUTTON2_MASK)
 {
    //Какое либо действие
 }
 if (e.getModifiers()==e.BUTTON3_MASK)
 {
    //Какое либо действие
 }
}

Вопрос: Как из программы написанной на Java сделать exe-приложение. То есть приложение запускаемое файлом с расширением exe. Хотя бы на примере Hello, world! :) Если для этого нет прямых методов, то может быть есть какие-нибудь обходные пути?

Ответ: JET - Оптимизирующий компилятор Java в код x86. Порождает обычные EXE и DLL файлы, не использующие JVM во время исполнения. Поддерживает все пакеты JDK 1.3 SE.

http://www.excelsior-usa.com/jet.html

Вам потребуется выполнить следующею команду: jc =m ИмяКласса.class

Вопрос: Не могли бы вы подсказать аплет, который обладает лучшими характеристиками, например, воспроизводит файлы *.wav, пусть не с наивысшим качеством, но все же качественно.

Ответ: Вот простой аплет, по крайне мере меня качество воспроизведения устраивает:


import java.awt.*;
import java.applet.*;
public class Audio extends Applet {
 AudioClip aClip;
 public void init() {
	aClip=getAudioClip(getDocumentBase(),"1.au");
        // можно также и *.wav
 }
 public void start() {
    if(aClip!=null) aClip.loop();//aClip.play();
 }
 public void stop() {
    if(aClip!=null) aClip.stop();
 }
}

Вопрос: Можно ли сделать с помощью JDK 1.3 графический интерфейс как автономную java-программу, а не как апплет?

Ответ: Пример простого автономного приложения:


import java.awt.*;
import java.awt.event.*;
public class YGFrame extends Frame
{
 public static void main (String args [])
 {
	System.out.println("Starting YGFrame...");
    YGFrame mainFrame = new YGFrame();
 }

 public YGFrame()
 {
  addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    dispose();
    System.exit(0);
   }
  });
  this.setSize(300,240);
  this.setTitle("YGFrame");
  this.setVisible(true);
  this.setResizable(false);
 }
 public void paint(Graphics g)
 {
  g.drawString("Автономное приложение",10,100);
 }
}

Вопрос: В некоторых книгах ключевые и зарезервированные слова не являются тождественными понятиями. Они составляют разные списки. Например, это было замечено при тестировании в Brainbanch. Что Вы думаете по этому поводу?

Ответ: Я думаю это связано с тем, что не все зарезервированные слова используются в данный момент: byvalue, cast, const, future, generic, goto, inner, operator, outer, rest, var.

Вопрос: Где можно скачать компилятор Java? Или он очень большой? <>

Ответ: Для Microsoft Windows j2sdk-1_3_1_02-win.exe = 44,495,461 байт.

Вопрос: Можно ли на Java сделать такие вещи, как форум, рассылка, почтовый робот и т.п. Или все кончится только красивыми всплывающимися меню и часами?

Ответ: Конечно, на Java можно написать всё что душе угодно. Java мощнейший язык программирования с огромными возможностями.

Страницы:

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95