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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание файлов из панели и из аплета, из аплета не получается? 
:(
    Опции темы
GIK
Дата 2.11.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Всем доброго времени суток.
Я не могу понять, почему не получается создать файлы из аплета.
Вот код Антона Cабурова, он создает файлы в формате jpg
Код

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;
import javax.imageio.*;

public class test extends JFrame implements ActionListener
{ 
  String images[] = {"g1.jpg", "g2.jpg", "g3.jpg"};  
  MyComp pnl = new MyComp();
  JButton btn = new JButton("Make graph");

  public test()              
  {
    getContentPane().add(pnl, BorderLayout.CENTER); 
    btn.addActionListener(this);
    getContentPane().add(btn, BorderLayout.SOUTH); 
    setBounds(200,300,400,300); 
  }
  public static void main(String args[])
  {
    test t = new test();                 
    t.setVisible(true);
  }
 public void actionPerformed(ActionEvent e)
 {
  try{  
    for(int i=0; i<3; i++){
      BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
      FileOutputStream os = new FileOutputStream(images[i]); 
      ImageIO.write(bi, "jpg", os);
      os.close();
     }      
    }
  catch(Exception ex) {
      ex.printStackTrace();
   }    
 }
}

class MyComp extends JPanel
{
  public void paintComponent(Graphics g)
  {
    super.paintComponent(g);
    int w = getWidth();
    int h = getHeight();
    int od = 10;
    int rd = 3;

    g.setColor(Color.WHITE);
    g.fillRect(0, 0, w, h);

    g.setColor(Color.BLACK);
    g.drawLine(0, 0, w, h);
    g.drawLine(0, h, w, 0);

    g.setColor(Color.BLUE);
    g.drawOval(w/od, h/od, w-2*w/od, h-2*h/od);

    g.setColor(Color.GREEN);
    g.fillRect(w/rd, h/rd, w-2*w/rd, h-2*h/rd);
  }
}

А это аплет, который в принципе имеет имеет такой же принцип создания файлов, но файлы не создаются, почему?
Код

/*
<applet code="apletImg.class" width=500 height=500>
</applet>
*/

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;

import javax.swing.*;
import javax.imageio.*;
import java.applet.*;

public class apletImg extends Applet implements ActionListener{ 
  String images[] = {"g1.jpg", "g2.jpg", "g3.jpg"}; 
  Button btn = new Button("Make graph");
 
 public void init(){
 btn.addActionListener(this);
 add(btn);
 }
 public void paint(Graphics g){
 g.drawString("images", 120, 120);
}

 public void actionPerformed(ActionEvent e)
 {
 try{  
    for(int i=0; i<3; i++){
      BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
      FileOutputStream os = new FileOutputStream(images[i]); 
      ImageIO.write(bi, "jpg", os); 
      os.close();
      }
     }      
  catch(Exception ex) {
      ex.printStackTrace();
     }        
 }
}




--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
powerOn
Дата 2.11.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 2
Всего: 159



Исключения какие вылетают?


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
skhilkov
Дата 3.11.2006, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 1
Всего: 7



Вероятно апплет не подписан?


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
GIK
Дата 3.11.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата(powerOn)

Исключения какие вылетают? 

Да вроде ничего не вылетает.
Использую такую проверку, и вроде ничего не отлавливает?
Код

 public void paint(Graphics g){
 g.drawString(str, 120, 120);
}

 catch(Exception ex) {
      str="not"; 
      repaint();
     } 


Цитата(skhilkov)

Вероятно апплет не подписан? 

Всмысле, неподписан?

Это сообщение отредактировал(а) GIK - 3.11.2006, 17:12


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
powerOn
Дата 3.11.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 2
Всего: 159



Цитата(GIK @  3.11.2006,  17:11 Найти цитируемый пост)
Всмысле, неподписан?

В смысле: не имеет цифровой подписи, поэтому ему запрещены некоторые операции, например создание файлов.

Цитата(GIK @  3.11.2006,  17:11 Найти цитируемый пост)
Использую такую проверку, и вроде ничего не отлавливает?

Извиняй, но не пойму как это ты так проверку сделал, а где try? Выложит код с проверкой полностью...



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
GIK
Дата 3.11.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата(powerOn)

В смысле: не имеет цифровой подписи, поэтому ему запрещены некоторые операции, например создание файлов.

Не имею представления о цифровых подписях, что это?

Цитата(powerOn)

Извиняй, но не пойму как это ты так проверку сделал, а где try? Выложит код с проверкой полностью...

Я просто поменял выводимое сообщене.
Код

/*
<applet code="apletImg.class" width=500 height=500>
</applet>
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;

import javax.swing.*;
import javax.imageio.*;
import java.applet.*;

public class apletImg extends Applet implements ActionListener{ 
  String images[] = {"g1.jpg", "g2.jpg", "g3.jpg"}; 
  Button btn = new Button("Make graph");
  String str="img";
 public void init(){
 btn.addActionListener(this);
 add(btn);
 }
 public void paint(Graphics g){
 g.drawString(str, 120, 120);
}

 public void actionPerformed(ActionEvent e)
 {
 try{  
    for(int i=0; i<3; i++){
      BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
      FileOutputStream os = new FileOutputStream(images[i]); 
      ImageIO.write(bi, "jpg", os); 
      os.close();
      }
     }       
     catch(Exception ex) {
      str="not"; 
      repaint();  
     }        
 }
}



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
powerOn
Дата 3.11.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 2
Всего: 159



Цитата(GIK @  3.11.2006,  17:50 Найти цитируемый пост)
Не имею представления о цифровых подписях, что это?

у нас в faq есть материал по этому поводу.

Насчет исключения, лучше не перехватываи ничего, а во время выполнения actionPerformed посмотри на java console... 
например захвати блок в сообщения:
Цитата(GIK @  3.11.2006,  17:50 Найти цитируемый пост)

System.out.println("start write file");
BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
FileOutputStream os = new FileOutputStream(images[i]); 
ImageIO.write(bi, "jpg", os); 
os.close();
System.out.println("end write file");


и посмотри что консоль выдаст....


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
GIK
Дата 3.11.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Блин, щас попробовал вариант с выводом сообщения "not",  и теперь видно что точно есть исключение, вот только не понятно по какой причине оно вызвано? 

Читаю про подписи......


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
GIK
Дата 7.11.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата

Нажимаем и ... опять ничего не работает. Все верно. мы должны также указать в политике безопасности,
что мы можем доверять аплетам, которые подписал "Vingrad".
Для этого надо сделать две вещи:
1. Указать JAVA_HOME. Указать его лучше всего на каталог с SDK
2. И в файл $JAVA_HOME\jre\lib\security\java.policy добавить следующие строки:
keystore "file:E:/TEMP/TEST/JAR/.keystore";
grant {
permission java.io.FilePermission "C:/AUTOEXEC.BAT", "read", signedBy "Vingrad";};

Что есть указать JAVA_HOME, и как егоуказать на каталог c SDK?
Мне через блокнот залезь в файл java.policy , и вставить в конец файла указанный код?



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
LSD
Дата 7.11.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(GIK @  7.11.2006,  10:34 Найти цитируемый пост)
Что есть указать JAVA_HOME, и как егоуказать на каталог c SDK?

Как начать работать с JAVA - тут объясняется и что такое JAVA_HOME и как ее установить.

Цитата(GIK @  7.11.2006,  10:34 Найти цитируемый пост)
Мне через блокнот залезь в файл java.policy , и вставить в конец файла указанный код?

А как еще можно трактовать фразу?
Цитата
И в файл $JAVA_HOME\jre\lib\security\java.policy добавить следующие строки:
...



--------------------
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   Вверх
Metal_Heart
Дата 7.11.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: нет
Всего: 12



по картинке догадаешься?



Это сообщение отредактировал(а) Metal_Heart - 7.11.2006, 11:25

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  untitled.jpg 55,60 Kb


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
GIK
Дата 8.11.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Как теперь мне подписать апплет на "вывод" фотографий?
Вот к примеру апплет который не обращается ни к каким файлам, и неможет "выкинуть" фотки (изображения)

Код

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;

import javax.swing.*;
import javax.imageio.*;
import java.applet.*;


public class apletImg extends Applet implements ActionListener{
  
  Image img;
  String massage="vot?";
  String images[] = {"g1.jpg", "g2.jpg", "g3.jpg"};
  Button btn = new Button("Make graph");
 
 public void init(){
 btn.addActionListener(this);
 add(btn);
}

 public void paint(Graphics g){
 g.drawString(massage, 10, 10);
}

 public void actionPerformed(ActionEvent e)
 { Graphics ggg;
 try{                     
    for(int i=0; i<3; i++){  
     BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);

     ggg=bi.getGraphics();
     ggg.drawString("new string",0,12);
     ggg.drawLine(0,0,500,500);
       
     FileOutputStream os = new FileOutputStream(images[i]); 
     ImageIO.write(bi, "jpg", os); 
     os.close();
      }
     }      
  catch(Exception ex) {
     massage="Exception";
     repaint();
     }     
 }
}










Это сообщение отредактировал(а) GIK - 8.11.2006, 15:26


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Metal_Heart
Дата 8.11.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: нет
Всего: 12



Цитата(powerOn @  3.11.2006,  18:06 Найти цитируемый пост)
Цитата(GIK @  3.11.2006,  17:50 Найти цитируемый пост)
Не имею представления о цифровых подписях, что это?

у нас в faq есть материал по этому поводу.


т.е.: http://vingrad.ru/JAVA-JAV-000116

Добавлено @ 17:17 
сгенерировав хранилище ключей, ты его можешь добавлять в свои любые апплеты


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
GIK
Дата 8.11.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Не получает создать файлы, даже после подписи.
Через фрейм создает без проблем:
Код

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;
import javax.imageio.*;

public class test extends JFrame implements ActionListener
{
  JButton btn = new JButton("Make graph");
  public test()             
  {
    btn.addActionListener(this);
    getContentPane().add(btn); //И кнопки   
    setBounds(200,200,200,200); //Уоординаты местоположения фрейма относительно окана windows и ширина окна
  }
  public static void main(String args[])
  {
    test t = new test();        
    t.setVisible(true);
  }
 public void actionPerformed(ActionEvent e)
 {
  try{
     for(int buf_i=0; buf_i<3; buf_i++){
      BufferedImage bi = 
      new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
      Graphics g = bi.getGraphics();
      g.drawString("gik", 12,12); //отрисовываем что нибуть

      FileOutputStream os = new FileOutputStream("test" + buf_i + ".jpg"); 
      ImageIO.write(bi, "jpg", os); 
      os.close();
     }
      JOptionPane.showMessageDialog(this, "Image is saved to file 'test.jpg'");
     }
  catch(Exception ex) {
     ex.printStackTrace();
     }    
 }
}



а через аплет не получается (все подписано, но подписан только на чтение, а не создание):
Код

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;

import javax.swing.*;
import javax.imageio.*;
import java.applet.*;


public class apletImg extends Applet implements ActionListener{
  
  String massage="vot?";
  Button btn = new Button("Make graph");
 
 public void init(){
 btn.addActionListener(this);
 add(btn);
}

 public void paint(Graphics g){
 g.drawString(massage, 10, 10);
}
 
 public void actionPerformed(ActionEvent e)
 {
  try{
     for(int buf_i=0; buf_i<3; buf_i++){
      BufferedImage bi = 
      new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
      Graphics g = bi.getGraphics();
      g.drawString("gik", 12,12); //отрисовываем что нибуть

      FileOutputStream os = new FileOutputStream("test" + buf_i + ".jpg"); 
      ImageIO.write(bi, "jpg", os); 
      os.close();
     }
     }
  catch(Exception ex) {
     massage=ex.getMessage();
      repaint();
     }    
 }
}





--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Alexandr87
Дата 9.11.2006, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 5
Всего: 39



Цитата(GIK @  9.11.2006,  01:48 Найти цитируемый пост)
а через аплет не получается (все подписано, но подписан только на чтение, а не создание):



Апплет может быть просто подписан, что ему разрешено делать решается непосредственно на машине на которой он будет запускатся.

Конечно, можно прописывать эти политики в файл java.policy, а можно и не прописывать. Тогда при открытии в браузере, браузер вам скажет мол апплет подписан тем-то, разрешить ему доступ к ресурсам, жмем ок, и все будет работать.
Так, что удалите пока из java.policy, то что там написали до этого.

Итак,

подписывать можно только .jar файлы, придется собрать .jar даже если у вас всего один class-файл.
После чего генерим keystore  

keytool -genkey -keystore .mykeystore -alias "forApplet"
и подписываем апплет
jarsigner -keystore .mykeystore Applet.jar "forApplet"

все эти моменты есть в FAQ.
Всё, больше ничего не нужно, запускаем html с кодом вроде
Код

<html>
<head><title>Power</title></head>

<body>
    <APPLET CODE="apletImg" ARCHIVE="Applet.jar" HEIGHT=300 WIDTH=600  />

</body>

</html>


На всплывающем окошке - жмем OK. Должно все заработать.


Файл java.policy требуется только если вам нужно строго регламентировать действия, которые может выполянть апплет, подписанный тем или иным человеком.

PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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