- PR -

Appletから開いたJFrameのサイズの上限?

投稿者投稿内容
ぎんだこ
会議室デビュー日: 2008/02/08
投稿数: 9
投稿日時: 2008-02-13 14:29
いつもお世話になっております。

アプレットからJFrameを開く、というアプリを組んでいますが、WindowsXPで可能だったサイズがWindowsVistaでは設定できません。

以下、簡単に説明させて頂きます。
XP機、及びVISTA機ともに画面の解像度は1024×768に設定しております。
アプレットがロードされた際に、JFrameのインスタンスを作成し、サイズを1024×768に指定して表示させます。
この時、XP機では指定どおり1024×768となりますが、VISTA機では1024×736となってしまいます。(getSize()して確認しました)
見たところ、XP機ではタスクバーの領域に被ってサイズ指定できましたが、VISTA機ではタスクバーの領域を引いたサイズになっているようです。
VISTAでも1024×768にsetSizeしたいと考えていますが、何か方法はございますか?

参考までに、サンプルソースを添付します。

---TestApplet---
package test;
import javax.swing.JApplet;
public class TestApplet extends JApplet{
public void init(){
TestJFrame.main(null);
}
}

---TestJFrame.java---
package test;
import javax.swing.JFrame;
public class TestJFrame{
public static void main(String[] args) {
JFrame jFrame = new JFrame("");
jFrame.setSize(1024, 768);
jFrame.setVisible(true);
System.out.println(jFrame.getSize().width + " "
+ jFrame.getSize().getHeight());
}
}

---アプレット起動HTML---
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>テスト</title>
</head>
<body>
<OBJECT
classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase = "http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0" >
<PARAM NAME = CODE VALUE = "test.TestApplet.class" >
<PARAM NAME = ARCHIVE VALUE = "test.jar" >
>
</OBJECT>
</body>
</html>
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-02-15 13:54
サイズを1024のような具体的な数値で指定しないことを、まず考えてください。
ではどうするのか?
ほかのかたの答えをたのしみに待つか、あるいはご自分でjava.awtパッケージを調べてください。
ぎんだこ
会議室デビュー日: 2008/02/08
投稿数: 9
投稿日時: 2008-02-18 09:23
引用:

rancoさんの書き込み (2008-02-15 13:54) より:
サイズを1024のような具体的な数値で指定しないことを、まず考えてください。



ご返答ありがとうございます。
数値で指定しないこと、、それは例えば画面サイズの最大値まで自動的に拡張するようなことが可能、ということでしょうか。
関連するクラスを一通り確認いたしましたが、サイズに関するメソッドは、setSize、setBoundsを確認できました。
ただどちらも具体的な数値で指定するものでした。
上記推測は全くの的外れでしょうか?

またjava.awtパッケージを確認いたしましたが、問題の解決につながりそうな情報は未だみつけることができておりません。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-02-18 09:31
引用:

ぎんだこさんの書き込み (2008-02-13 14:29) より:
見たところ、XP機ではタスクバーの領域に被ってサイズ指定できましたが、VISTA機ではタスクバーの領域を引いたサイズになっているようです。
VISTAでも1024×768にsetSizeしたいと考えていますが、何か方法はございますか?


Windows Vista を良くは知らないのですが、疑問としては Windows Vista で動かした場合、JFrame のウィンドウの右下隅をマウスでつまんでリサイズして「1024×768」相当に拡大することはできるのでしょうか?

また、これは Java Applet の場合だけなのでしょうか。Java Application ではどうなのでしょうか?

なお、試すときは一時的にタスクバーの領域を広げて試すと挙動がハッキリすると思います。

あと、当然(?)、メモ帳などの Java 以外のウィンドウは「1024×768」になるのですよね?

[ メッセージ編集済み 編集者: unibon 編集日時 2008-02-18 09:31 ]
ぎんだこ
会議室デビュー日: 2008/02/08
投稿数: 9
投稿日時: 2008-02-18 10:51
引用:

unibonさんの書き込み (2008-02-18 09:31) より:
Windows Vista を良くは知らないのですが、疑問としては Windows Vista で動かした場合、JFrame のウィンドウの右下隅をマウスでつまんでリサイズして「1024×768」相当に拡大することはできるのでしょうか?

また、これは Java Applet の場合だけなのでしょうか。Java Application ではどうなのでしょうか?

なお、試すときは一時的にタスクバーの領域を広げて試すと挙動がハッキリすると思います。

あと、当然(?)、メモ帳などの Java 以外のウィンドウは「1024×768」になるのですよね?



ご返答有難うございます。
手動でウィンドウサイズを変更した場合、vistaではJava Application,Java Applet,メモ帳すべて「1044×788」まで引き延ばすことができました。

Java ApplicationでsetSizeした際には、「1024×768」になります。
最大で「1044×788」まで設定が反映されました。

タスクバーの領域を変更して動作確認したところ、Java AppletでsetSizeした際には必ずタスクバーの領域にかぶさらないようにサイズが調整されました。
タスクバーを広げた場合、その分Appletウィンドウの高さが縮み、タスクバーを「自動的に隠す」設定にした場合にはAppletウィンドウのサイズは「1024×768」になりました。

まとめると下記の通りです。

○JavaからsetSizeでサイズ指定した際の最大ウィンドウサイズ
・Java Applet:1024×736 (高さはタスクバーに被らないように自動調整)
・Java Application:1044×788

○手動でウィンドウ右下隅をマウスでつまんでリサイズした場合の最大ウィンドウサイズ
・Java Applet:1044×788
・Java Application:1044×788
・メモ帳:1044×788

[ メッセージ編集済み 編集者: ぎんだこ 編集日時 2008-02-18 15:30 ]
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-02-18 14:58
> VISTAでも1024×768にsetSizeしたいと考えていますが、何か方法はございますか?
事前にタスクバーを無表示にすれば可能と思います。簡単なWinアプリで。
(フルスクリーンモードをサポートしているプラットホーム上(Linux/GNOME, Windows Vistaなど)では、JavaのグラフィクスがタスクバーなどOSのコントロール資源の存在を尊重する仕様になっています。)

なお、単純なディスプレイ環境では、スクリーンサイズをToolkit.getScreenSize()から得られます。
複雑な環境や、フルスクリーンモードを使用するときは、GraphicsDeviceの各メソッドを使います。
ぎんだこ
会議室デビュー日: 2008/02/08
投稿数: 9
投稿日時: 2008-02-19 13:24
引用:

rancoさんの書き込み (2008-02-18 14:58) より:
事前にタスクバーを無表示にすれば可能と思います。簡単なWinアプリで。



タスクバーを無表示にすれば、確かに可能ですね。
しかしアプレット実行のためにクライアントPCに特別な設定を施す、というのは避けたいと考えています。
クライアントPC側で何も設定を変えずに、というのは難しいでしょうか。

なお、新たにわかったことといたしまして、Vista機のJREのセキュリティポリシーで「java.security.AllPermission」に許可を与えると、期待の「1024×768」に設定できました。
なんらかのセキュリティ制限が関係している、ということでしょうか。
しかしこの方法も、クライアントに特別な設定を施しているため、避けたいと考えています。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-02-19 16:29
Vistaを使っていないので想像ですが、
Java Applicationの場合は制限を受けていないところから、
Java WebStartでも期待の動きをするんじゃないかと思います。

現在のAppletの作りもmainメソッド付きのJFrameを使っているようですから、
簡単に移植ができるのではないかと思います。

どうしてもAppletである必要はありますか?

スキルアップ/キャリアアップ(JOB@IT)