Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> через Idea запускается, из командной - нет,почему? 
:(
    Опции темы
unreger
Дата 28.6.2004, 05:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код
package AddButtonToIE;

import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class AddButtonToIE extends JFrame implements ActionListener
{
JLabel lbl_Caption, lbl_Hint, lbl_Action;
JLabel lbl_SoursePath;
JButton cmd_OK;
JButton cmd_SelectSoursePath;
JTextField txt_Caption, txt_Hint, txt_Action;
JTextField txt_SoursePath;
JDialog file_Dialog;
JFileChooser select_Icon;
String filename = File.separator+"tmp";

public static void main(String args[])
{
 new AddButtonToIE();
}

//  constructor
public AddButtonToIE()
{
 super("Добавление кнопки в тулбар IE");
 setBounds(50, 50, 300, 300);
 getContentPane().setLayout(null);
 setResizable(false);
 setDefaultCloseOperation(EXIT_ON_CLOSE);

 lbl_Caption = new JLabel("подпись");
 lbl_Caption.setLocation(5, 5);
 lbl_Caption.setSize(lbl_Caption.getPreferredSize());

 lbl_Hint = new JLabel("подсказка");
 lbl_Hint.setLocation(5, 30);
 lbl_Hint.setSize(lbl_Hint.getPreferredSize());

 lbl_SoursePath = new JLabel("иконка");
 lbl_SoursePath.setLocation(5, 55);
 lbl_SoursePath.setSize(lbl_SoursePath.getPreferredSize());

 lbl_Action = new JLabel("действие");
 lbl_Action.setLocation(5, 80);
 lbl_Action.setSize(lbl_Action.getPreferredSize());

 txt_Caption = new JTextField(15);
 txt_Caption.setLocation(lbl_Hint.getX() + lbl_Hint.getWidth() + 5, 5);
 txt_Caption.setSize(txt_Caption.getPreferredSize());

 txt_Hint = new JTextField(15);
 txt_Hint.setLocation(lbl_Hint.getX() + lbl_Hint.getWidth() + 5, 30);
 txt_Hint.setSize(txt_Hint.getPreferredSize());

 txt_SoursePath = new JTextField(15);
 txt_SoursePath.setLocation(lbl_Hint.getX() + lbl_Hint.getWidth() + 5, 55);
 txt_SoursePath.setSize(txt_SoursePath.getPreferredSize());

 txt_Action = new JTextField(15);
 txt_Action.setLocation(lbl_Hint.getX() + lbl_Hint.getWidth() + 5, 80);
 txt_Action.setSize(txt_Action.getPreferredSize());

 // Create the three buttons...
 cmd_OK = new JButton("OK");
 cmd_OK.setSize(cmd_OK.getPreferredSize());
 cmd_OK.setLocation(200, 200);

 cmd_SelectSoursePath = new JButton("...");
 cmd_SelectSoursePath.setLocation(250, 55);
 cmd_SelectSoursePath.setSize(20, 20);

 // Add the action listeners
 cmd_OK.addActionListener(this);
 cmd_SelectSoursePath.addActionListener(this);

 select_Icon = new JFileChooser(new File(filename));
 file_Dialog = new JDialog();
 Action openAction = new OpenFileAction(this, select_Icon);
 cmd_SelectSoursePath.addActionListener(openAction);

 // Add the objects to the content pane...
 getContentPane().add(lbl_Caption);
 getContentPane().add(lbl_Hint);
 getContentPane().add(lbl_SoursePath);
 getContentPane().add(lbl_Action);

 getContentPane().add(txt_Caption);
 getContentPane().add(txt_Hint);
 getContentPane().add(txt_SoursePath);
 getContentPane().add(txt_Action);

 getContentPane().add(cmd_OK);
 getContentPane().add(cmd_SelectSoursePath);

 setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
 if (e.getSource() == cmd_OK)
 {
  File theFile = new File("tmp.reg");
  try
    {
      DataOutputStream outputStream = new DataOutputStream(new FileOutputStream(theFile));

            outputStream.writeBytes("Windows Registry Editor Version 5.00");
      outputStream.write(0xD);outputStream.write(0xA);
      outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes ("[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer" +
        "\\Extensions\\{999F1910-F110-11d2-BB9E-00C04F795680}]");
     outputStream.write(0xD);outputStream.write(0xA);
               outputStream.writeBytes("\"ButtonText\"=\"" + txt_Caption.getText().toString()+"\"");
     outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes("\"CLSID\"=\"{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}\"");
     outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes("\"Default Visible\"=\"Yes\"");
     outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes("\"Exec\"=\""+txt_Action.getText().toString()+"\"");
     outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes("\"HotIcon\"=\"" + txt_SoursePath.getText().toString()+"\"");
     outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes("\"Icon\"=\"" + txt_SoursePath.getText().toString()+"\"");
     outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes("\"MenuText\"=\"" + txt_Caption.getText().toString()+"\"");
     outputStream.write(0xD);outputStream.write(0xA);
      outputStream.writeBytes("\"Tooltip\"=\"" +txt_Hint.getText().toString()+"\"");
               outputStream.flush();
   outputStream.close();

      Process p;
     p = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " +"F:\\_MY_\\IdeaProjects\\AddButtonToIE\\tmp.reg");
     try
     {
      p.waitFor();
     } catch (InterruptedException err)
     {
      err.printStackTrace();
     }
  }
  catch(IOException err)
  {
   System.out.println(err);
  }
 }
 else
  if (e.getSource() == cmd_SelectSoursePath)
  {

   txt_SoursePath.setText(select_Icon.getSelectedFile().getAbsolutePath().toString());
  }
 
 
}
}

// This action creates and shows a modal save-file dialog.
class SaveFileAction extends AbstractAction
{
JFileChooser chooser;
JFrame frame;

SaveFileAction(JFrame frame, JFileChooser chooser)
{
 super("Save As...");
 this.chooser = chooser;
 this.frame = frame;
}

public void actionPerformed(ActionEvent evt)
{
 // Show dialog; this method does not return until dialog is closed
 chooser.showSaveDialog(frame);
 //chooser.getSelectedFile();
}
}

class OpenFileAction extends AbstractAction
{
JFileChooser chooser;
JFrame frame;

OpenFileAction(JFrame frame, JFileChooser chooser)
{
 super("Open...");
 this.chooser = chooser;
 this.frame = frame;
}

public void actionPerformed(ActionEvent evt)
{
 // Show dialog; this method does not return until dialog is closed
 chooser.showOpenDialog(frame);
 //chooser.getSelectedFile();
}
}

  Вверх
unreger
Дата 28.6.2004, 05:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











просто запустите

через RealJ тоже не запускается
  Вверх
LSD
Дата 28.6.2004, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



У меня все запустилось, правда кнопка не добавилась.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
unreger
Дата 1.7.2004, 06:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











да это так, скелет...который вряд ли будет дописан, уже не интересно
а кнопка добавляется через контекстное меню на панели с кнопками - customize... наверняка и это можно автоматом
+добавить генератор guid-ов чтобы кнопки различались...все просто

мне интересно другое, у себя я убрал первую строку
package AddButtonToIE;
и все заработало

почему?

т.е.
import javax.swing.*;

public class ATOIE extends JFrame
{
public ATOIE()
{
super("─юсртыхэшх ъэюяъш т ЄєысрЁ IE");
setBounds(50, 50, 300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String args[])
{
ATOIE f = new ATOIE();
}
}

работает
а с это строкой - package ATOIE; -нет

  Вверх
LSD
Дата 1.7.2004, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Потому что полное имя вашего класса (исходного) AddButtonToIE.AddButtonToIE. Соответственно он должен находится в каталоге AddButtonToIE, а родительский каталог этого каталога должен быть в classpath, и запускать надо: java AddButtonToIE.AddButtonToIE. Соответственно что то из вышеперечисленного вы сделали не правильно, посмотрите с какой командной строкой запускает его Idea.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
unreger
Дата 2.7.2004, 05:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











точно, надо запускать именно так, спасибо

еще вопрос, что должно находится в CLASSPATH? по всем правилам?
  Вверх
LSD
Дата 3.7.2004, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



1) Системный CLASSPATH можно переопределить в строке запуска командой -classpath и будет действовать именно он (JBuilder именно так и делает)
2) В системный (тот что определен через переменную окружения) CLASSPATH желательно занести текущий каталог (причем поставить его первым), и те каталоги и jar-ы которые вам нужны для повседневной работы. Например: jdbc драйвера СУБД с которой вы работаете, сторонние утилиты и т.д.
Вообще говоря есть еще один механизм загрузки ваших классов Extension Mechanism. Поместив jar в каталог <jre>/lib/ext а бинарники в <java-home>/bin, вы добьетесь того что они будут автоматом подключены, без вашего участия. Но он рекомендуется для расширений JVM таких как: Java3D, JavaComm и т.д., а не для пользовательских классов.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
unreger
Дата 3.7.2004, 06:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1) Системный CLASSPATH можно переопределить в строке запуска командой -classpath и будет действовать именно он (JBuilder именно так и делает)
ага у Idea тоже нашел

>и jar-ы которые вам нужны для повседневной работы
а которые не для повседневной? ведь рано или поздно понадобятся?
надо понимать что следует включить в CLASSPATH все jar-ы?

у меня CLASSPATH =.;C:\j2sdk1.4.1_02\jre\lib\rt.jar

пойду читать про Extension Mechanism
  Вверх
LSD
Дата 3.7.2004, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



C:\j2sdk1.4.1_02\jre\lib\rt.jar - можете удалить из CLASSPATH, он и так будет подключен автоматом.
Добавить можно все что вам понадобится, лишние классы грузиться все равно не будут, только может не сильно увеличится время загрузки класса (т.к. будут последовательно просматриваться все элементы CLASSPATH), легко запутаться в длинном CLASSPATH и к тому же есть ограничение на длинну системной переменной окружения. Можно для запуска создать bat файл который будет устанавливать нужные переменные на время запуска программы.
Extension Mechanism достаточно специфичная штука и предназначен он скорее для расширения возможностей JRE, этакие плагины.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.