Resizing Applets from Java code - A second pass Изменение размера апплеты Java из кода - Вторая попытка
Challenge: Resizing applet from within Java code. Проблема: Изменение размера апплет из Java кода. For example say the applet code calculates that the applet needs more space than it has been allocated, then how to go about it? К примеру сказать, апплет код рассчитывает, что апплет нужно больше места, чем она была выделена, то каким образом сделать это?
Last time when faced with this problem Последний раз, когда сталкиваются с этой проблемой I solved it with a nifty piece of Javascript method Я решить ее с nifty кусок Javascript метод . However I soon realized there were few issues with the approach. Однако я вскоре осознали лишь немногие вопросы, с подхода.
First we made the applet dependent on external piece of Javascript method which creates undesirable dependency. Сначала мы сделали апплет зависит от внешних кусок Javascript метод, который создает нежелательные зависимости.
The main problem was when we wanted to embed multiple such applets in the same page. Основная проблема была, когда мы хотим вставлять несколько таких апплетов на одной странице. Obviously now I cannot use the same resize method, which is hardcoded to call the applet by name. Очевидно, сейчас я не могу использовать один и тот же размер метод, который жестко называть по имени апплета. Also I found that document['appletname'] logic fails when the applet is within a table. Кроме того, я обнаружил, что в документе [ 'appletname'], не логика, когда апплет находится в таблице. Then we have to refer to the applet using the hierarchy which we do not control. Затем мы должны сослаться на апплет с использованием иерархии, которые мы не контролируем. We also cannot have two applets with the same name as then only the first one executes. Мы также не можем иметь две апплеты с тем же названием, как и тогда только один первый выполняет.
So it was obvious we needed to pass the name of the applet to this method. Так что вполне очевидно, нам нужно пройти название апплет для данного метода. But how to get the name? Но, как получить имя?
I intuited correctly that since applet.getParameter used to get parameters from within the applet tag, it is possible that we can fetch the name of the applet using the same method. Я intuited правильно, что, поскольку applet.getParameter используется для получения параметров внутри тега апплета, возможно, что мы можем извлечь название апплет, используя тот же метод. That turned out to be the case. Это оказалось так. So now I had this version where I passed the name of the applet to the resize method and it called the applet by its name ( applets['name'] ) and set the size as passed on by the parameters. Так что теперь я эту версию, где я прошел имя апплета на размер метод и она называется апплет его имя (апплеты [ 'имя']) и установить размер, как прошел по параметрам. This worked fine with both the browsers ( Этот штраф работал с обоими браузерами ( Internet Explorer Internet Explorer & И Netscape ). However I was still not satisfied. Однако я по-прежнему не удовлетворены. The external dependency was bugging me. Внешняя зависимость была bugging меня. The next step was to try to execute javascript code within Java itself, using the same LiveConnect bridge. Следующий шаг состоит в том, чтобы попытаться выполнить javascript код в Java сам, используя тот же LiveConnect моста. My first attempt to set the size using Мои первые попытки установить размеры с помощью JSObject.getMethod failed in IE. неудачу в IE. Apparently Internet Explorer doesn’t support the method! Видимо Internet Explorer не поддерживает метод! Then I simply evaluated the whole code using eval. Тогда я просто оценить весь код с помощью eval. This worked well for both the browsers. Это хорошо для обоих браузеров. I could get rid of the pesky javascript method - resize. Я мог бы избавиться от pesky javascript метод - размер. Now finally I was happy. Теперь, наконец, я был счастлив. As I soon realized however there was still a little snag. Как я вскоре осознали однако там по-прежнему мало обманка. The fixes don’t work in Opera browser. Исправляет не работает в браузере Опера. But I am not too worried considering the market share of this browser. Но я не слишком обеспокоены рассмотрении рыночная доля этого браузера.
To summarize the key line of code: jso.eval(applet + “width = ” + width + “;”); Подводя итог ключевых строку кода: jso.eval (апплет + "ширина =" + ширина + ";");
Filed under Поданного в соответствии с Java Software Программное обеспечение Java , Web Веб | |
| |
RSS 2.0 RSS 2,0 | |
Email this Article Отослать Статья
You may also like to read Вы можете также люблю читать |





April 22nd, 2008 at 11:53 am 22 апреля 2008 года в 11:53 утра
import java.awt.*; импорт java.awt .*;
import java.awt.event.*; импорт java.awt.event .*;
import javax.swing.*; импорт javax.swing .*;
import javax.swing.JFileChooser; javax.swing.JFileChooser импорта;
import java.io.*; импорт java.io. *;
import javax.imageio.ImageIO; javax.imageio.ImageIO импорта;
class SceneViewer2 extends JFrame implements MouseListener, MouseMotionListener SceneViewer2 расширяет класс JFrame реализует MouseListener, MouseMotionListener
{ (
JFrame jf=new JFrame(”Your created Scene”); JFrame jf = новый JFrame ( "Ваш создан Сцена");
JPanel jp=new JPanel(); JPanel jp = новый JPanel ();
private int xAdjustment; частные int xAdjustment;
private int yAdjustment; частные int yAdjustment;
Component dragComponent; Компонент dragComponent;
public static void main(String args[]) государственной статической силы основных (String args [])
{ (
new SceneViewer2(); новые SceneViewer2 ();
} )
SceneViewer2() SceneViewer2 ()
{ (
jf.setExtendedState (getExtendedState () | JFrame.MAXIMIZED_BOTH);//MAXIMIZES THE WINDOW ON EXECUTION jf.setExtendedState (getExtendedState () | JFrame.MAXIMIZED_BOTH) / / максимизирует окно на ИСПОЛНЕНИЯ
jp = (JPanel) jf.getContentPane (); jp = (JPanel) jf.getContentPane ();
jp.setLayout (null); jp.setLayout (нулевой);
jp.addMouseListener( this ); jp.addMouseListener (это);
jp.addMouseMotionListener( this ); jp.addMouseMotionListener (это);
JLabel[] lblPic=new JLabel[2]; JLabel [] = lblPic новых JLabel [2];
//inserts 1st image / / 1st вставки изображения
lblPic[0]=new JLabel(); lblPic [0] = новый JLabel ();
lblPic[0].setBounds(0,0,200,200); lblPic [0]. setBounds (0,0,200,200);
ImageIcon selected_image=new ImageIcon(”atif3.jpg”); ImageIcon selected_image = новый ImageIcon ( "atif3.jpg");
Image sel=selected_image.getImage(); Image sel = selected_image.getImage ();
selected_image=new ImageIcon(sel.getScaledInstance(lblPic[0].getWidth(),lblPic[0].getHeight(),1)); selected_image = новый ImageIcon (sel.getScaledInstance (lblPic [0]. getWidth (), lblPic [0]. getHeight (), 1));
lblPic[0].setIcon(selected_image); lblPic [0]. setIcon (selected_image);
jp.add(lblPic[0]); jp.add (lblPic [0]);
//inserts 2nd image / / 2nd вставки изображения
lblPic[1]=new JLabel(); lblPic [1] = новый JLabel ();
lblPic[1].setBounds(300,0,200,200); lblPic [1]. setBounds (300,0,200,200);
selected_image=new ImageIcon(”ash3.jpg”); selected_image = новый ImageIcon ( "ash3.jpg");
sel=selected_image.getImage(); sel = selected_image.getImage ();
selected_image=new ImageIcon(sel.getScaledInstance(lblPic[1].getWidth(),lblPic[1].getHeight(),1)); selected_image = новый ImageIcon (sel.getScaledInstance (lblPic [1]. getWidth (), lblPic [1]. getHeight (), 1));
lblPic[1].setIcon(selected_image); lblPic [1]. setIcon (selected_image);
jp.add(lblPic[1]); jp.add (lblPic [1]);
jp.repaint(); jp.repaint ();
jf.setVisible(true); jf.setVisible (истинного);
} )
//CODE FOR MOVING THE IMAGES ON DRAG / / Код для движущихся изображений на перетащить
public void mousePressed(MouseEvent e) недействительной государственной mousePressed (MouseEvent д)
{ (
Container container = (Container)e.getSource(); Контейнер контейнер = (контейнер) e.getSource ();
Component component = container.findComponentAt(e.getX(), e.getY()); Какой компонент = container.findComponentAt (e.getX (), e.getY ());
if (component instanceof JPanel) return; если (компонента экземпляром JPanel) возвращение;
dragComponent = component; dragComponent = компонента;
xAdjustment = dragComponent.getLocation().x - e.getX(); xAdjustment = dragComponent.getLocation (). х - e.getX ();
yAdjustment = dragComponent.getLocation().y - e.getY(); yAdjustment = dragComponent.getLocation (). год - e.getY ();
} )
public void mouseDragged(MouseEvent e) недействительной государственной mouseDragged (MouseEvent д)
{ (
if (dragComponent == null) если (dragComponent == нулевой)
return; возвращение;
dragComponent.setLocation(e.getX() + xAdjustment, e.getY() + yAdjustment); dragComponent.setLocation (e.getX () + xAdjustment, e.getY () + yAdjustment);
} )
public void mouseReleased(MouseEvent e) недействительной государственной mouseReleased (MouseEvent д)
{ (
dragComponent = null; dragComponent = недействительными;
} )
public void mouseClicked(MouseEvent e) {} недействительной государственной mouseClicked (MouseEvent е) ()
public void mouseMoved(MouseEvent e) {} недействительной государственной mouseMoved (MouseEvent е) ()
public void mouseEntered(MouseEvent e) {} недействительной государственной mouseEntered (MouseEvent е) ()
public void mouseExited(MouseEvent e) {} недействительной государственной mouseExited (MouseEvent е) ()
} )
this is my proggrame…. это мое proggrame….
i want a resizing code so i can rezise the image also.. я хочу размера кода Поэтому я могу rezise изображения также ..