Как изменить размер java-апплета при изменении размера браузера?

У меня есть Java-апплет, который встроен в HTML с помощью метода object-comment-embed. Я хотел бы изменять размер апплета всякий раз, когда изменяется размер окна браузера. Я нашел решения в Интернете, но все они работают на основе устаревшего тега applet.

Кроме того, при попытке вызова setSize() на моем элементе embed в FireBug он изменит размер содержимого апплета, но не окна просмотра апплета. То есть область отображения, переданная java, не меняется.

Текущий код выглядит примерно так:

<object
    id='MyApplet1'
    width='300' height='200'
    classid='clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
    codebase='http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab#Version=1,6,0,0'>
    <param name='type' value='application/x-java-applet;version=1.6'>
    <param name='scriptable' value='false'>
    <param name='codebase' value='foo'>
    <param name='code' value='bar'>
    <param name='archive' value='baz'>
    <param name='arg1' value='A'>
    <param name='arg2' value='B'>
    <comment>
        <embed
            id='MyApplet2'
            width='300' height='200'
            pluginspage='http://java.sun.com/products/plugin/index.html#download'
            type='application/x-java-applet;version=1.6'
            scriptable='false'
            codebase='foo'
            code='bar'
            archive='baz'
            arg1='A'
            arg2='B'>
            <noembed>
            </noembed>
        </embed>
    </comment>
</object>
<script type = "text/javascript"> 
function resize() {
  min_width = 300;
  min_height = 200;
  frame_width = 0;
  frame_height = 0;
  if (parseInt(navigator.appVersion) > 3) {
    if (navigator.appName=='Netscape') {
      frame_width = window.innerWidth;
      frame_height = window.innerHeight;
    }
    if (navigator.appName.indexOf('Microsoft') != -1) {
      frame_width = document.body.offsetWidth;
      frame_height = document.body.offsetHeight;
    }
  }
  frame_width *= 0.78;
  frame_height *= 0.78;
  applet_width = frame_width > min_width ? frame_width : min_width;
  applet_height = frame_height > min_height ? frame_height : min_height;
  document.getElementById('MyApplet1').setSize(applet_width, applet_height);
  document.getElementById('MyApplet2').setSize(applet_width, applet_height);
}
window.onResize = resize;
window.onLoad = resize;
</script> 

вызывается ваша функция изменения размера? (например, где ошибка?)

scunliffe 17.12.2008 20:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
8
1
9 476
2

Ответы 2

Попробуйте заменить эти строки:

document.getElementById('MyApplet1').setSize(applet_width, applet_height);
document.getElementById('MyApplet2').setSize(applet_width, applet_height);

с участием:

document.getElementById('MyApplet1').style.height = applet_height + "px";
document.getElementById('MyApplet1').style.width = applet_width + "px";

document.getElementById('MyApplet2').style.height = applet_height + "px";
document.getElementById('MyApplet2').style.width = applet_width + "px";

Я голосую за этот метод. По сути, я сделал то же самое, чтобы изменить размер элементов управления ActiveX. Это должно работать так же для апплета.

CodingWithSpike 20.12.2008 00:59

Это сработало! Я делал то же самое, используя setSize (). Он был вызван, но размер апплета не изменялся. Спасибо!

Steven Mai 13.06.2014 19:39

Почему бы вам не использовать процентную ширину и высоту. Обычно я использую следующий код для своих апплетов:

<applet codebase = "http://localhost:89" archive = "npaxet?version=0.0.1.28" code = "main.NPaxet.class" width=100% height=90%>\
<PARAM NAME = "thumbnailUrl" VALUE = "http://localhost:89/thumbnail?seriesid=%s">
<PARAM NAME = "dicomUrl" VALUE = "http://localhost:89/dicom?imageid=%d">
<PARAM NAME = "seriesCount" VALUE = "11">
...
</applet>

Другие вопросы по теме