• 締切済み

jpanelのタイトルの横に・・・

どなたか知恵を貸してください。 現在、javaのswingを使って画面を作っています。画面の中のswingコンテナのパネル(jpanel)には、ボーダーを表示し、タイトルをつけています。  質問なのですが、そのタイトルのすぐ右横にjtextfieldを表示させたいのですが、どういうレイアウト手法を使ったらよいのでしょうか?仕事で作成しなければならないため、焦っています。良い知恵がありましたらアドバイスをよろしくお願いします。

みんなの回答

noname#49664
noname#49664
回答No.1

タイトルバーとして表示しているものの右端に表示させたい、ということですか? それとも、タイトルバーの右辺の外側につけたいということでしょうか? タイトルバー(の内部)の右端に組み込みたいということなら、例えばタイトルバー部分のJPanelに横2×縦1のGridLayoutを組み込み、その右側にJPanelを入れて右揃えでFlowLayoutを組み込む、という感じになるでしょうか。  もっと微妙な調整が必要ということなら、LayoutManagerかLayoutManager2を継承して独自にレイアウトマネージャを定義するのが手っ取り早いかも知れませんね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javaでスタート画面を作っていて困っています。

    現在javaでゲームのスタート画面を作っているのですが、パネルが透過されずに困っています。 プログラムソースは import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.*; import java.awt.Font; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; class Start最新版 extends JFrame{ public static void main(String args[]){ Start最新版 frame = new Start最新版("タイトル"); frame.setVisible(true); } Start最新版(String title){ setTitle(title); setBounds(10, 10, 1024, 768); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setOpaque( false ); ImageIcon icon1 = new ImageIcon("Start.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); p.add(label1); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); JButton button1 = new JButton("ゲームを始める"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel n = new JPanel(); n.setOpaque(false); n.setLayout(new BoxLayout(n, BoxLayout.Y_AXIS)); n.add(Box.createRigidArea(new Dimension(290,30))); n.add(button1); となっています。「ゲームを始める」ボタンだけを残して、周りのパネルを透過して画像を表示させたいのですが、うまくいきません!解決方法をご存知の方どうか教えていただきたいです!よろしくお願いします。

  • javaのJTextFieldにマウスフォーカス

    お世話になります。 Q1)下記のコードに於きまして、JTextFieldにマウスフォーカス が当りますと、その旨、System.out.println("JTextField_tt")と表示する方法をお教えください。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.LineBorder; public class EObjectTest extends JFrame implements ActionListener { public static JButton b1; public static JButton b2; public static JTextField tt; static EObjectTest frame; public static void main(String args[]){ frame=new EObjectTest("AAAA"); frame.setVisible(true); } EObjectTest(String title) { setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); // ボタン作成・追加 b1 = new JButton("One"); b2 = new JButton("Two"); tt = new JTextField("aaa"); LineBorder border = new LineBorder(Color.RED, 2, true); tt.setBorder(border); tt.setColumns(15); p.add(b1); p.add(b2); p.add(tt); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); // リスナ登録 b1.addActionListener(this); b2.addActionListener(this); tt.addActionListener(this); } public void actionPerformed(ActionEvent e) { // getSource() でイベントソースのオブジェクトを獲得し // Button クラスにキャストする JButton b = (JButton)e.getSource(); // JTextField ttt = (JTextField)e.getSource(); if (b==b1) { System.out.println("Oneのボタン"); } if (b==b2) { System.out.println("Twoのボタン"); } /* if (ttt==tt) { System.out.println("JTextField_tt"); } */ } } 以上

    • ベストアンサー
    • Java
  • JavaのSwingのレイアウト

    Swingを学習中ですが、うまくレイアウトできません。 添付した画像のようなレイアウトにしたいです。 作ってみたものは以下です。 import java.awt.BorderLayout; import java.awt.Color; import javax.swing.*; public class LayoutTest { public static void main(String[] args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(); JTextField searchFiled = new JTextField("テキスト"); String[] comboboxString = {"C", "C++", "Java"}; JComboBox comboBox = new JComboBox(comboboxString); JButton button = new JButton("ボタン"); panel.add(comboBox, BorderLayout.EAST); panel.add(searchFiled, BorderLayout.CENTER); panel.add(button, BorderLayout.WEST); frame.add(panel, BorderLayout.PAGE_START); JPanel redPanel = new JPanel(); redPanel.setBackground(Color.RED); frame.add(redPanel); frame.setSize(700, 500); frame.setLocationRelativeTo(null); frame.setVisible(true); } }

    • ベストアンサー
    • Java
  • Jpanelへの描画について(初心者です)

    質問1 実行した時に内容が表示されたりされなかったりします、どうしてでしょうか? いろいろ試してみましたが分かりませんでした。 質問2 JPanelではダブルバッファリング機能が備わっているみたいですが、 という事はこのソースでもそれは行なわれているのでしょうか? 以上2点と質問が多いですがよろしくお願いします。 import java.awt.*; import javax.swing.*; public class JFrameTest extends JFrame{  JPanelTest panel;  Container ct;  public static void main(String[] args){   new JFrameTest();  }  public JFrameTest(){   super("JFrameTest");   panel = new JPanelTest();   ct = getContentPane();   setSize(480,480);   setResizable(false);   setVisible(true);   setDefaultCloseOperation(EXIT_ON_CLOSE);   ct.add(panel);  } } class JPanelTest extends JPanel{  public JPanelTest(){   setSize(480,480);  }  public void draw(Graphics g){   g.drawString("Test",240,240);  }  public void paintComponent(Graphics g){   super.paintComponent(g);   draw(g);  } }

    • ベストアンサー
    • Java
  • GridBagLayoutについての質問

    ウィンドウ上のjContentPane上にJPanelを配置し、レイアウトをGridBagLayoutにしてそのJPanel上にJTextFieldを置くとそのJTextFieldの幅がほぼ0になります。下記のプログラムがその一部です。gridBagConstraints2.fill をnullにしたままJTextFieldの幅を広げたいのですがどうしたらいいでしょうか?教えてください。 private JPanel getJPanel() { if (jPanel == null) { GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); jPanel = new JPanel(); jPanel.setLayout(new GridBagLayout()); jPanel.setPreferredSize(new java.awt.Dimension(200,150)); gridBagConstraints2.gridx = 0; gridBagConstraints2.gridy = 0; gridBagConstraints2.weightx = 1.0; gridBagConstraints2.fill = java.awt.GridBagConstraints.NONE; gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints2.gridwidth = 4; jPanel.add(getJTextField(), gridBagConstraints2); } return jPanel; } private JTextField getJTextField() { if (jTextField == null) { jTextField = new JTextField(); jTextField.setColumns(32); } return jTextField; }

    • ベストアンサー
    • Java
  • javaのpanelが表示されません

    下記のプログラムを作ったんですが、eclipseで実行するとフレームは表示されますが、空のフレームのような状態で、panelやボタンなどは表示されません。mainとは別のクラスで作成してるからなんでしょうか?よろしくお願いします。 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class Table0 { public static void main(String[] args) { new Frame0(); } } class Frame0{ JFrame frame; JPanel panel; JScrollPane jsp; JTable table; DefaultTableModel dtm; public Frame0(){ frame=new JFrame("table"); frame.setBounds(30, 30, 300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); table=new JTable(8,5); jsp=new JScrollPane(table); jsp.setPreferredSize(new Dimension(250, 70)); panel=new JPanel(); panel.add(jsp); Container c=frame.getContentPane(); c.add(panel,BorderLayout.CENTER); } }

    • ベストアンサー
    • Java
  • 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
  • 【Swing】JPanel クラス外からのremoveについて

    _tonnuraと申します。どうぞよろしくお願いします。 現在、 ・初期画面(Menu.java) ・イベント(ButtonClicked.java) ・パネル設定(Mondai.java) の3つを使用して、画面を切り替えようとしています。(パネルを載せていく形です) 「Class Mondai」にて定義したパネル(p10)の部品を、フレームに載せる前にいじりたいと思っていますが、「☆」の部分で困っています。 内部で「add」「remove」する分には問題ないのですが、一旦外にでてしまうと、配列でしか「remove」できない状態です。 上記の挙動から、戻り値的には「ButtonClicked」上でコンテナ(p10)が見えていると思うのですが、配列以外(名前やID等、処理のたびに変動しないもの)で指定することはできないのでしょうか。 画面によってはループを考えていますので、必要な部分だけ追記したいのです。配列での指定ですと応用が辛いので・・。 尚、ソースが無駄に長いため 概念的な部分だけ抜き出しています。 「そもそも」な部分が多々あると思いますが、なにとぞよろしくお願いします。 ■Class Menu package test; //フレームの定義 public class Menu extends JFrame{     public static void main(String[] args) {         Menu frame_m = new Menu();         frame_m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         frame_m.setTitle("画面遷移テスト");         frame_m.setBounds(10, 10, 750, 570);         frame_m.setVisible(true);         frame_m.setResizable(false);     }     Menu() {     ~(省略)初期画面のパネル・部品・レイアウトに関する宣言~     panel_menu.add(t_label);     getContentPane().add(panel_menu);     validate();     } ■Class ButtonClicked package test; Class ButtonClicked implemments ActionListener{     //フレームを格納 パネル作成時の設置先として使用      public Menu owner;     //パネルを格納  前パネルの削除先として使用(getContentPane)     public Container subowner;     public void actionPerformed(ActionEvent ae) {             String cmd = ae.getActionCommand();             if (cmd.equals("btn_01")) {             //遷移画面の描写(パネルを被せる)                 Mondai obj = new Mondai();                 Container p10 = obj.drawPanel(owner);     //Class Mondaiにて定義したパネル上のコンポーネントJButton3)を削除したい     ☆問題の部分です(ERROR:「JButton3を解決できません」) //               p10.remove(JButton3);     ☆こっちだとOK (varidate後、表示されていない)                 p10.remove(3);//owner.list(System.out)参照                 owner.add(p10);                 owner.validate();             } else if (cmd.equals("btn_b02")) {             //別の処理hogehoge             } } ■Class Mondai package test; public Container drawPanel(Menu frame)throws Exception {     JPanel p10 = new JPanel();     ~(省略)遷移画面のパネル・部品・レイアウトに関する宣言~     p10.add(JButton1);     p10.add(JButton2);     p10.add(JButton3);     return p10; }

    • ベストアンサー
    • Java
  • Java、jPanelに描画する

    お世話になっています。 Java言語を始め、オブジェクト指向というなれない環境にいます。(今まではBASICを利用) 今回、jPanelなるものを使い、その中に四角形などを描画したいのですが、 うまくいきません。 public void paintComponent(){ Graphics pnl = panel.getGraphics(); pnl.setColor(new Color(0,0,255)); pnl.drawOval(100,100,50,50); } こういう関数を作り、プログラムから呼び出しています。(フレーム作成時には表示しない) おそらくこの辺りがダメだと思うのですが、よくわかりません。 すいませんが、jPanelの使い方を詳しく教えていただけないでしょうか。 ゲームを作る課題なのですが、ここで詰まってしまい進めません。 ご存じの方がいらっしゃいましたら、ご教授ください。 よろしくお願い致します。

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

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

    • ベストアンサー
    • Java
このQ&Aのポイント
  • プリンターDCP-J987NのLC3111シアンのインクカートリッジを交換したが検知されない問題が発生しています。
  • 接続は有線LANで行っており、パソコンのOSはWindows11です。
  • 電話回線の種類や関連するソフト・アプリについては情報がありません。
回答を見る