質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

812閲覧

Frameの最大サイズの設定

plue

総合スコア71

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2017/10/10 10:24

編集2017/10/10 10:25

awtのFrameに対し、リサイズ可能な最大サイズを設定したいと思っており、以下のクラスを作成しました。
しかし、setMaximumSize()を設定しても適用されていないようです。
また、リサイズイベントで指定のサイズにする方法もcomponentResized()で試したのですが、
Frameをマウスドラッグで大きくした後にマウスボタンを離すとFrameがマウスの位置まで拡大されてしまいます。

最大サイズの設定方法は可能でしょうか?
よろしくお願い致します。

java

1import java.awt.Dimension; 2import java.awt.Frame; 3import java.awt.event.ComponentAdapter; 4import java.awt.event.ComponentEvent; 5import java.awt.event.WindowAdapter; 6import java.awt.event.WindowEvent; 7 8 9public class FrameResize { 10 11 /** 12 * @param args 13 */ 14 public static void main(String[] args) { 15 16 Frame frame = new Frame(); 17 frame.setSize(500,500); 18 19 // 最大サイズ設定 20 Dimension dim = new Dimension(600,600); 21 frame.setMaximumSize(dim); 22 23 // リサイズイベント付与 24 frame.addComponentListener(new ComponentAdapter() { 25 26 @Override 27 public void componentResized(ComponentEvent e) { 28 e.getComponent().setSize(500,500); 29 } 30 }); 31 32 // 画面終了用 33 frame.addWindowListener(new WindowAdapter() { 34 @Override 35 public void windowClosing(WindowEvent e) { 36 System.exit(0); 37 } 38 }); 39 40 // リサイズ可能 41 frame.setResizable(true); 42 // 画面表示 43 frame.setVisible(true); 44 } 45} 46
KSwordOfHaste👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

記憶が定かではないので自信ないですが、最大サイズを指定したアプリを作れた気がするのですが、やってみるとできないですね。あれれ・・・

(ちなみにaddComponentListenerでリサイズしようとしても(少なくともWindows10では)マウスの位置に再度リサイズされてしまうため、対処にはならないと思います。)

少々古い情報ですが、

stack overflow: Setting the Maximum size of a JFrame while launching the application

をみると一番上の回答者さんが、少々凝った回避策を挙げているのでそれが解になるかも知れません。ただし、awtは実装が古い気がするのでせめてswingでトライした方が良いのではないでしょうか。上記の回答もswingが対象です。

投稿2017/10/10 12:19

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

plue

2017/10/11 01:15

回答ありがとうございます。SwordOfHasteさんのところでも動かなかったのですね。。 書き忘れていましたが、こちらの動作環境もWindows10で、Javaは1.7です。 せっかく教えていただいたのですが業務の制約上、 swingは使用できずawtのみで頑張るしかない状況です。。。
KSwordOfHaste

2017/10/11 01:31

> awtが前提 そうでしたか。stack overflowの回避コードにJFrameを使っていたので、swing前提と申し上げましたが、もう一度内容を見てみると、概ねawtでも適用し得る範囲の処理であるように見えました。本当にそうかどうかは自信ないですが、他に手がないようなら上記を試してみる価値があるかも知れないと思いました。曖昧な情報で恐縮ですが。
plue

2017/10/11 02:23

awtで流用してみた結果、最大サイズになったときに画面が一瞬チラつきますが 許容範囲内ということで当対応を採用することになりそうです。 とても助かりました。ありがとうございます。
KSwordOfHaste

2017/10/11 02:29

こちらこそありがとうございます。これできるとばかり思っていたので・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問