• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:パネルに画像)

パネルに画像を入れることはできますか?

_ranco_の回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

> 以下のボタンを画像に出来ないかと思うのですが 6つの画像を配置して、それらをボタンとして作用させたいのですか? それとも、6つのjava.awt.Buttonを配置した状態を画像として取得したいのですか? 前者なら、MouseListenerの出番のようですし、 後者ならImageやBufferedImageを使うことになるでしょう。 なお、SwingのJButtonなら、ボタンの上に画像をアイコンとして乗せられます。

startover
質問者

お礼

回答ありがとうございます! 説明が足りなかったのですが 例では パネルに ボタンを入れましたが あくまで パネルへ画像の入れ方を  教えていただきたかったのです。 よろしければお願いします。

関連するQ&A

  • GridLayoutのPanel上のButton

    GridLayoutのPanel上のButton横サイズを取得したいのですが、 button1.getWidth()==0 と出てしまいます。 フレームやパネルのサイズをボタン数で割れば出るのですが、 そうではなく、ボタンのサイズを取得したいです。 ご存知の方がおられましたら教えて下さい。 //----以下ソースです---- import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ButtonSizeOnGridLayout extends JFrame { public ButtonSizeOnGridLayout() { JPanel panel1 = new JPanel(new GridLayout(0, 5)); JButton button1 = new JButton(); button1.setPreferredSize(new Dimension(150, 150)); System.out.println("button1.getWidth()==" + button1.getWidth());//出力:0 panel1.add(button1); this.getContentPane().add(panel1); this.pack(); this.setVisible(true); } public static void main(String a[]) { new ButtonSizeOnGridLayout(); } }

    • ベストアンサー
    • Java
  • GridLayoutについて

    GridLayoutレイアウトで ボタンを追加し 後で プログラムで レイアウトの( 2, 1 )に  別のボタンを配置したり ( 2, 2 )の位置に 何のコンポーネントのオブジェクトがあるか? と知ることが出来る 方法はありますか? 教えてください。 JPanel p = new JPanel(); p.setLayout( new GridLayout( 2, 2 ) ); JButton b1 = new JButton( "Button1" ); JButton b2 = new JButton( "Button2" ); JButton b3 = new JButton( "Button3" ); JButton b4 = new JButton( "Button3" ); p.add( b1 ); p.add( b2 ); p.add( b3 ); p.add( b4 );

    • ベストアンサー
    • Java
  • カレンダーを作っているのですが

    import java.awt.*; import java.awt.event.*; public class GraphicsC4 extends Frame { public static void main(String ar[]){ Frame f=new GraphicsC4(); f.setTitle ("平成19年6月 (GridLayout)"); f.setSize(640,400); f.setVisible(true); } GraphicsC4(){ setFont(new Font("SansSerif",Font.BOLD+Font.ITALIC,30)); GridLayout gl=new GridLayout(6,7); setLayout(gl); String day[]={"SUN","MON","TUE","WED","THU","FRI","SAT"}; for(int j=0;j<=6;j++){ Button b1=new Button(day[j]); add(b1); } for(int e=1;e<=5;e++){ Button b2=new Button(""); add(b2); } for(int i=1;i<=30;i++){ Button b3=new Button(""+i+""); add(b3); } addWindowListener(new WinAdapter()); } class WinAdapter extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } } ここまで書いたのですが、日曜日を赤く表示することが出来ません。どなたか教えてください。

  • panel.add(new Button("1"));という書き方について。

    javaを学習している者です。 インスタンスを作成するには クラス名 変数名 = new クラス名(); というのが基本だと思うのですが、タイトルのような書き方(panel.add(new Button("1"))だと頭の中ではどのように考えればいいのでしょうか?変数名を持たないインスタンスを生成してパネルにのっけている、ということでしょうか?しかもこれがfor文で繰り返されていると for(int i = 0; i < 10; i++){ panel.add(new Button(Integer.toString(i))); } 余計にややこしくて分からなくなってしまいます。一応10個違うインスタンスをそれぞれ作っているのでしょうか? 本に載っていた書き方だし、エラーも出ないのでまず間違っていないのは分かるのですが、いまいちピンと来ないです・・・。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのボタン表示等に関する質問

    下記のコードはフォームをNORTH、CENTER、SOUTHEに分割して、それぞれのpaneに ラベルとボタンを表示するものです。 Q1)myFrame.setBounds(350,0, total_x, total_y)をコンストラクターの最初に記述しますと  フォームの表示が正常でなく、コンストラクターの最後では、正常に行なわれます。  この理由等について、コメント頂けますと有り難いです。 Q2)mainに記述してある、下記のコードは無くても、Xでクロースできますが,このコード  の記述は正しいでしょうか GridLayout_new frame = new GridLayout_new(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 以上お手数ですが、コメント頂けますと大変助かります。 //============================================= import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class GridLayout_new extends JFrame{ int panelA_x=200, panelA_y=50; int panelB_x=200, panelB_y=200; int panelC_x=200, panelC_y=50; int total_x=panelA_x; int total_y=panelA_y+panelB_y+panelC_y; public static void main(String[] args){ GridLayout_new frame = new GridLayout_new(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } GridLayout_new(){ JFrame myFrame=new JFrame(); myFrame.setTitle("panelA"); // myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示が出来ない myFrame.setVisible(true); LineBorder border = new LineBorder(Color.BLACK, 1, true); //======================== JLabel button1=new JLabel("Label1"); GLabel_Layout(button1, border); JButton button2 = new JButton("button2"); button_Layout(button2, border); //======================== JLabel button3=new JLabel("Label3"); GLabel_Layout(button3, border); JButton button4 = new JButton("button4"); button_Layout(button4, border); //======================== JLabel button5=new JLabel("Label5"); GLabel_Layout(button5, border); JButton button6 = new JButton("button6"); //======================== JLabel button7=new JLabel("Label7"); GLabel_Layout(button7, border); JButton button8 = new JButton("button8"); //======================== JLabel button9=new JLabel("Label9"); GLabel_Layout(button9, border); JButton button10 = new JButton("button10"); button_Layout(button10, border); //======================== JLabel button11=new JLabel("Label11"); GLabel_Layout(button11, border); JButton button12 = new JButton("button12"); button_Layout(button12, border); //================================== JPanel p1 = new JPanel(); GridLayout layout1 = new GridLayout(2,2); //2行、2列の設定 layout1.setHgap(2); layout1.setVgap(10); p1.setLayout(layout1); p1.setBackground(Color.GREEN); p1.add(button1); p1.add(button2); p1.add(button3); p1.add(button4); myFrame.setSize(panelA_x, panelA_y); myFrame.getContentPane().add(p1, BorderLayout.NORTH); //============================== JPanel p2 = new JPanel(); GridLayout layout2 = new GridLayout(2,2); //2行、2列の設定 layout2.setHgap(2); layout2.setVgap(10); p2.setLayout(layout2); p2.setBackground(Color.GREEN); p2.add(button5); p2.add(button6); p2.add(button7); p2.add(button8); myFrame.setSize(panelB_x, panelB_y); myFrame.getContentPane().add(p2, BorderLayout.CENTER); //================================== JPanel p3 = new JPanel(); GridLayout layout3 = new GridLayout(2,2); //2行、2列の設定 layout3.setHgap(2); layout3.setVgap(10); p3.setLayout(layout3); p3.setBackground(Color.GREEN); p3.add(button9); p3.add(button10); p3.add(button11); p3.add(button12); myFrame.setSize(panelC_x, panelC_y); myFrame.getContentPane().add(p3, BorderLayout.SOUTH); myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示 } //constructor void GLabel_Layout(JLabel label, LineBorder border){ label.setPreferredSize(new Dimension(80,20)); label.setBorder(border); label.setBackground(Color.lightGray); label.setOpaque(true); } void button_Layout(JButton button, LineBorder border){ button.setPreferredSize(new Dimension(80,20)); button.setBorder(border); } } //main class....GridLayout_new

    • ベストアンサー
    • Java
  • 数字が描かれたボタンを繰り返し処理で描きたい。

    アプレットを勉強している初心者です。 数字(1~9)が描かれたボタンを繰り返し処理で9個描きたいのですが、以下のような感じでいけると思い挑戦したのですが、ボタンには全て「u」が表示されてしまいます。 for(int u = 1; u < 10; u++){ Button b2 = new Button("u"); b2.setLocation(20*u+1,220); b2.setSize(20,20); add(b2); } Buttonの引数がintならいけるのかなぁと初心者な考えで試してみたのですが、それは受け付けなかったようで手の打ちようが無くなってしまいました。 もし、アドバイスがいただけたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • JButtonの配置

    FlowLayoutによって、JFrameにボタン6個を2×3に配列するプログラムを考えています。ボタンを配置することはできたのですが、ウインドウの大きさを変えるとボタンが3×2になったりと変更してしまいます。 ウインドウの大きさを変えても、ボタンの大きさは変えず、ボタン6個が2×3配列になるプログラムはどうしたらよいのでしょうか?以下は、途中のプログラムです。 import java.awt.*; import javax.swing.*; public class sample { public static void main(String[] args){ MyFrame frame = new MyFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } public class MyFrame extends JFrame { public static final int WIDTH = 200; public static final int HEIGHT = 300; public MyFrame(){ setSize(WIDTH,HEIGHT); Container contentPane = getContentPane(); MyPanel panel = new MyPanel(); contentPane.add(panel); } } public class MyPanel extends JPanel{ public static final int MESSAGE_X = 200; public static final int MESSAGE_Y = 200; setLayout(new FlowLayout()); JButton button1 = new JButton("Button1"); contentPane.add(button1); JButton button2 = new JButton("Button2"); contentPane.add(button2); JButton button3 = new JButton("Button3"); contentPane.add(button3); JButton button4 = new JButton("Button4"); contentPane.add(button4); JButton button5 = new JButton("Button5"); contentPane.add(button5); JButton button6 = new JButton("Button6"); contentPane.add(button6); }

    • ベストアンサー
    • Java
  • ListのItemListenerについて

    50音のリストから選択したタイトルの画像を表示するようなプログラムを作ろうと思っているのですが、ItemListenerの2種類以上の使い方?が分かりません。 左側のChoiceからListの内容は書き換えることが出来たのですが、真ん中のListから右のListを書き換え、更には右のListから下部へ画像を表示させたいのです。 この場合どのように記入すればいいのか教えてください。お願いします。 以下拙いですが自分の書いた部分です import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Test extends Applet implements ItemListener{ Panel p[]=new Panel[1]; Choice c1; String s[]={"あ","い","う","え","お","か","き","く","け","こ", "さ","し","す","せ","そ","た","ち","つ","て","と", "な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ", "ま","み","む","め","も","や","ゆ","よ","","", "ら","り","る","れ","ろ","わ","","","","",}; List lst1,lst2; int i; public void init() { p[0]=new Panel(new GridLayout(1,3)); c1=(Choice)p[0].add(new Choice()); for (i=0;i<50;i=i+5) c1.add(s[i]+"行"); c1.addItemListener(this); lst1=(List)p[0].add(new List(5)); lst1.add(s[0]); lst1.add(s[1]); lst1.add(s[2]); lst1.add(s[3]); lst1.add(s[4]); lst1.addItemListener(this); lst2=(List)p[0].add(new List(5)); lst2.addItemListener(this); add(p[0]); } public void itemStateChanged(ItemEvent e){ Choice c1=(Choice)e.getSource(); String str=(String)c1.getSelectedItem(); if(str.equals("あ行")){ lst1.removeAll(); for(i=0;i<5;i++){ lst1.add(s[i]); } lst2.removeAll(); } else if(str.equals("か行")){ lst1.removeAll(); for(i=5;i<10;i++){ lst1.add(s[i]); } lst2.removeAll(); } 以下わ行まで書いてあります } public void destroy() { } }

    • ベストアンサー
    • Java
  • Javaで美術館パズルを作ろうとしたのですが、、、

    Java言語(eclipse)を使い美術館パズル(http://www.nikoli.com/ja/puzzles/bijutsukan/)を作成しようと思い作っていき、柱や番号をframeやbuttonとしておき、クリックしたらそこにランプが置けるか判定し、可能ならば緑のランプを点灯させるところまでは何とかプログラミングできました。しかしその後、その置いたランプから十字方向に(柱にぶつかるまで)黄色いランプを点灯させる良いプログラミングが思い浮かびません。1から作り直すようなアイディアでも構いませんので、何かいい方法があれば、ぜひ教えてください。以下に自分の悩んでいる部分を載せておきます。↓ class MuseumGame extends JFrame implements ActionListener { JPanel panel; MyButton[][] button; MyButton[] lamp; MyButton[][] lamp2; int lamp_count; MuseumGame(GameData data) { setTitle("美術館パズル"); setSize(500,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); panel = new JPanel(); add(panel); panel.setLayout(new GridLayout(data.w,data.h)); button = new MyButton[data.h][data.w]; for(int i=0; i<data.h; i++) { for(int j=0; j<data.w; j++) { button[i][j] = new MyButton(i,j); button[i][j].addActionListener(this); panel.add(button[i][j]); } } for(int i=0; i<data.n; i++) { int h = data.wall[i][0]; int w = data.wall[i][1]; int c = data.wall[i][2]; button[h][w].setWall(c); } lamp = new MyButton[data.h*data.w]; lamp_count = 0; } public void actionPerformed(ActionEvent ae) { MyButton button = (MyButton) ae.getSource(); if( button.isWall ) return; if( button.getText() == "■" ) { button.setText(""); } else { if( button.getBackground() == Color.WHITE ) { lampAdd(button); } else { lampDelete(button); } } } void lampAdd(MyButton button) { // 本当にそこにランプが置けるか判定する lamp[lamp_count++] = button; button.setBackground(Color.GREEN); // 柱の数値をチェックして影響を表示する // 四方の通路を黄色にする // 上を解決するいいアイディアをお願いします、、、

    • ベストアンサー
    • Java
  • C#でパネルに子パネルを上から降順追加したいです。

    図のように"追加ボタン"を押すと親パネル(panel1)に子パネル(panel2)を上から 追加する画面を作りました。(以下がソースです) private void button1_Click(object sender, EventArgs e) { int i = 0; foreach (Panel p in panel1.Controls) { i++; p.Top += 40; } Panel panel2 = new Panel(); createPanel(panel2, i);※子パネルのレイアウトを設定し、確認用の連番をセットしています panel1.Controls.Add(panel2); } 常に親パネルの最上段に子パネルを追加したいのですが、 スクロールバーで親パネルの下のほうで追加ボタンを押すと、 親パネルの表示されている最上段の位置に子パネルが追加されてしまいます。 スクロールバーで親パネルの最下部に移動していても、追加するときは親パネルの(0,0,)の位置に 子パネルを表示させるにはどのように実装したらよいでしょうか? メソッドcreatePanel(panel2, i)の中で、 子パネルのロケーションを0,0に設定してもダメでした。 以上、よろしくお願いいたします。