• 締切済み

swingについて

こんにちは。 swingについて質問させていただきます。 swingで配置したボタンなどが、設定したフレームのサイズから最大化した場合に、始めに配置した位置からズレて表示されてしまいます。 フレームのサイズが変更された場合でも、コンポーネントの位置がズレないようにするにはどのようにすればいいでしょうか?

  • Java
  • 回答数2
  • ありがとう数0

みんなの回答

  • norachlo
  • ベストアンサー率100% (10/10)
回答No.2

状況が掴めていないのですが。。。 レイアウトマネージャは設定していますか? もし、レイアウトマネージャを null にしているのであれば、ComponentListener を用いれば良いと思います。それでフレームのサイズが変更されるたびに、その都度ボタンの配置やサイズを設定し直せば実現できます。

回答No.1

X軸、Y軸を設定してもズレるってことですかね? X軸、Y軸を設定していないのであればズレるのは当たり前だと思いますよ。

関連するQ&A

  • JAVA swingについて

    JAVA swingとAWTのみを使って画面を作成してるのですがうまくエラー<作りたい仕様> ・ポップアップウィンドウの大きさを決めることができる ・自由にボタンを設定できる(大きさ・場所など) ・設定したボタンにアクション設定できる(戻り値もOK) また、今あるフレームの上にパネルをはり、パネルの上にコンポーネントを追加して、エラー発生画面を作る方法でもいいです。 どちらかいい方法やクラスなどを知っていましたらぜひ教えて下さい。

    • ベストアンサー
    • Java
  • java swing での質問です。

    javaのプログラミングをeclipseでしているのですが swingで行き詰ってしまいました。 タブペインを使いタブパネルを作り、その中にボタンを配置したのですが、 ボタンの位置をsetBoundsで動かすことができませんでした。 他の命令を使わなければならないのでしょうか? プログラミング自体が初心者のため、説明に不備があると思いますが 助けていただけると幸いです。 ひどいプログラミングかと思いますが張らせていただきました package gui; import java.awt.*; import javax.swing.*; public class ReisyokuMenu extends JFrame{ /*serialVersionUID*/ private static final long serialVersionUID=1L; /*コンポーネント作成*/ JButton syokuzaiBtn = new JButton("食材一覧"); JButton syoumiBtn = new JButton("賞味期限順"); JButton bunruiBtn = new JButton("分類"); JButton returnBtn=new JButton("Topへ"); JPanel tabPanel1 = new JPanel(); JPanel tabPanel2 = new JPanel(); JTabbedPane tabbedpane = new JTabbedPane(); public ReisyokuMenu(){ /*Closeボタンでアプリケーションが終了しないように設定*/ setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); /*フレームサイズを変更できないように設定*/ setResizable(false); /*フレームコンテナのインスタンスを生成*/ Container cPane = getContentPane(); /*レイアウトマネジャを利用しない(座標を指定する)*/ cPane.setLayout(null); setLocationRelativeTo(null); setSize(400, 380);//setBoundsはy、x、幅、高さを指定するのでsetLocationRelativeToで位置指定をする為に使用。 setTitle("一人暮らし支援ツール");//アプリケーションタイトルを入れる tabbedpane.addTab("食材を見る", tabPanel1); tabbedpane.addTab("食材を探す", tabPanel2); tabPanel1.add(syokuzaiBtn); tabPanel1.add(syoumiBtn); tabPanel1.add(bunruiBtn); syokuzaiBtn.setLocation(50, 80);//「選択」ボタン syoumiBtn.setBounds(10,10,325,120); bunruiBtn.setBounds(10,270,90,40); tabPanel2.add(new JLabel("食材名:")); tabPanel2.add(new JTextField("", 10)); setContentPane(tabbedpane); } public void setVisible(boolean isVisible){ if(isVisible){ /*フレームの表示位置を指定(x,y)*/ setLocation(200,200); } /*フレームを表示*/ super.setVisible(isVisible); } }

  • Swingについての質問です

    Swingについての質問です  まだJava初心者です^^。とんでもない質問でしたらすいません。  Swingの中の、JFrameを使って、ある図形を描画するという場面です。描画はできたのですが、コンピュータの画面から図形がはみ出してしまって、全体を見る事ができません。そこで、スクロールバーを表示したいと思っているのですが、その方法はどうすれば良いのでしょうか?  下に、普段私が使っている、一本の線を描画するサンプルを書いておきます。 import java.awt.*; import javax.swing.*; public class Sample extend JPanel { public static void main(String[] args){ JFrame frame = new JFrame("Sample"); TestFrame tf = new TestFrame(); frame.add(tf); frame.getComponents().add(tf); frame.setSize(120, 120); //ウインドウサイズを120×120に指定 frame.setBackground(Color.WHITE); frame.setVisible(true); } } class TestFrame extends JPanel{ void paintComponent(Graphics g){ g.drawLine(10, 10, 100, 100); //(10, 10)から(100, 100)に線を描画 } }  もちろんこの場合はスクロールバーは必要ないですが、このような場合でもウインドウサイズを50×50のような小さいサイズにしてしまったときだけスクロールバーが現れるようにできたらもっと嬉しいです。  回答宜しくお願いします。

    • ベストアンサー
    • Java
  • JFrameとJPanelの最大化について

    swingでアプリケーションを作成しています。 1つのフレーム上に複数のパネルを描画する(画面遷移)アプリです。 たとえば、ログイン用のパネル、メニュー用のパネルと言ったように用意しています。 ここで問題が発生しました。 フレームの最大化ボタンを押しても、パネルが最大化されず、パネル内に配置しているボタンなども位置の調整が行われません。 フレームにレイアウトマネージャーを指定しても、パネルは最大化されないのでしょうか? フレーム自体にボタンを配置すると調整はされるのですが・・・ 今のところクラス構成としては、 フレームクラス ログインパネルクラス メニューパネルクラス データ表示パネルクラス となっています。 ログインパネルのボタンを押されたら、ログインパネルを破棄し、メニューパネルを表示するといった作りにしています。 どのパネルを表示しているときにも、フレームの最大化ボタンが押された場合にパネルの最大化も行いたいのです。 どなたかご教授願えませんでしょうか?

    • ベストアンサー
    • Java
  • GUI画面でsetBounds()で作成した画面は最大化ボタンが機能しない

    ちょっと題名がおかしくなってしまいましたが、 SwingでもAWTでも、setBounds()メソッドを使ってボタンなどを配置すると、最大化ボタンを押しても位置がそのまま表示されてしまうので、画面のデザインとしておかしくなってしまいます。 VBなんかだと最大化ボタンを押すとそれに応じてボタンやテキストボックスもちゃんと位置が移動します。 最大化ボタンを押しても適当に表示させる方法はないでしょうか?

    • ベストアンサー
    • Java
  • swingアプリで動作時にコンポーネント毎に設定されているデフォルトの

    swingアプリで動作時にコンポーネント毎に設定されているデフォルトのフォントを取得したいです。 一部のJLabelの文字やJTextFieldの文字を大きく(小さく)表示したい時、 Fontクラスを使って設定する事になると思いますが、フォント名から指定しなければいけません。 swingのデフォルト値(dialog)であれば決め打ちでいいと思うのですが、変更されていると決め打ちだと浮いてしまいます。 そのため、デフォルト値を取得したいです。

  • Swing自作コンポーネントをadd出来るように、

    JTextFieldやJButtonなどを一つにまとめたコンポーネントを自作し、それをadd()出来るようにしたいです。frame.add(自作のクラスのインスタンス)を可能にしたいです。 調べて、paintComponent()を使えば良いということはわかったのですが、Graphicsのインスタンス(?)に線を描いたり、円を描いたりする方法はわかりましたが、JButtonやJTextFieldなどをGraphicsのインスタンス(?)に追加する方法はわからず、paintComponent()を使うやり方はできませんでした。 paintComponent()も使わずに、自分のできる方法で、組んだものを一応載せます。 import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class MyComponentTest{ public static void main(String[] args){ JFrame frame = new JFrame("タイトル"); frame.setSize(400, 300); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); // 2つのテキストフィールドと一つのボタンを4つ追加する frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.add(new TwoTextFieldsAndOneButton().getContent()); frame.setVisible(true); } } //2つのテキストフィールドと一つのボタンを一つの部品にしたい class TwoTextFieldsAndOneButton{ JTextField textField1 = new JTextField("テキストフィールド1"); JTextField textField2 = new JTextField("テキストフィールド2"); JButton button = new JButton("ボタン"); // こんなメソッドを使わずに、再現したい JPanel getContent(){ JPanel panel = new JPanel(); panel.add(textField1); panel.add(textField2); panel.add(button); return panel; } }

    • ベストアンサー
    • Java
  • 実験 課題 Java Swing 教えてください

    学校のPBL(問題解決学習?)でファイル操作関係のJavaアプリケーションを作る事になりました。 PBLから説明しますと、おおまかな課題が出題されて、それに則した課題を自分たち(4人の班)で決めてそれを解決する。みたいなものです。なので、テンプレみたいなものはなく、答えもありません。 世界的なシェアやこれから使えるかなーと思ってJavaで作ることにしました。が、学校の授業で習ったのはせいぜいJava入門書(やさ○いJava)程度で、アプリケーションを作れるような知識はほぼありません。 自分はGUIを任されたのですが、swingを学びながら少しずつ進んでいるところです。 ここで、一気に質問の本題に入ります。 操作するファイルのリストを表示してソートなどの機能をつけるのですが、Windowsのエクスプローラのファイルなどが表示されている部分のすぐ上の 名前 |更新日時 | 種類 | サイズ みたいなバー?はSwingのコンポーネントで作れますか? ソートの機能もそこに付けたい(Windowsのように)のですが、ラベルとボタンを組み合わせるのでしょうか?

    • ベストアンサー
    • Java
  • Javaアプリケーションで、実行後ウィンドウのサイズを変更するとコンポーネントも変わる?

    Java、Swingを勉強しているのですが、Javaアプリケーションでウィンドウのサイズを右下の角(名前がわからなくてすみません)をドラッグドロップして変更すると、置いてあるコンポーネントのサイズも変更されるように実装は出来るでしょうか? 具体的にはJTextAreaコンポーネントの位置と大きさをウィンドウの大きさの比率で設定したい(例えば、大きさは幅、高さ共ウィンドウのサイズの3/4で、JTextAreaの左上のスタート地点は左から幅*1/4、上は高さ*1/5、説明が分かりにくくすみません…)のですが、どうやればいいかわかりません。 とりあえずレイアウトをnullにして座標と幅高さを数字で設定すれば、希望の感じにはなるのですが、ウィンドウの大きさを変更してしまうと、その幅高さなどは変わらないので不自然な感じになってしまって…。 よろしくお願いします。

    • ベストアンサー
    • Java
  • swing初心者です

    swingを使って簡単なアプレットを作ったのですが、ボタンの表示のタイミングが妙です。ボタンが起動時に表示されず、マウスオーバーして初めて表示されます。 import java.awt.*; import javax.swing.*; public class Test extends JApplet implements Runnable{ public void init(){ getContentPane().add(new JButton("START")); new Thread(this).start(); } public void run(){ try{ while(true){ Thread.sleep(10); } catch(InterruptedException ie){ ie.printStackTrace(); } } } これはどうしてなのでしょうか。初歩的な質問かもしれませんが、どうかご教授お願いいたします。 環境 WindowsXP SP2, java1.5.0_07

    • ベストアンサー
    • Java

専門家に質問してみよう