• ベストアンサー

seticonとパスについて

javaの勉強を入門書を使いながら始めたばかりですが、いきなり困ってしまいました。 あるレッスンでの例題プログラムでボタンを押すと画像が表示されるというものなんですが、 void jButton1_actionPerformed(ActionEvent e) { jLabel1.setIcon(new imageicon("c:\\java\\Image\\smile.gif")); } ここでsmile.gifを表示させたいのですが何故かimageiconがみつかりません、というエラーメッセージがでます。 本に書いてあるとおりの書式ですし、c:\java\Imageという場所にsmile.gifというファイルも置きました。 どうして駄目なんでしょうか? ちなみにこの場所指定は絶対パスということですよね、 これを相対パスで記述する場合、どのファイルから見た相対的な位置を記述するのでしょうか? 初歩的な質問で申し訳有りませんがどなたかよろしくお願いします。 JBuilder5を使って勉強しています。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

imageiconは ImageIconの間違いではありませんか? Javaでは大文字と小文字を区別するので、 注意してください。

nakanoma
質問者

お礼

ありがとうございます、ご指摘の通りでした。 基本からしっかり学びます。

その他の回答 (1)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.2

yuji さんの仰る通り、ImageIcon ですね。 あと、 ・SWINGがインストールされていること ・javax.swing.ImageIcon が import されていること も確認して下さい。

参考URL:
http://java.sun.com/j2se/1.3/docs/api/javax/swing/ImageIcon.html
nakanoma
質問者

お礼

どうもありがとうございます。ranxさんのアドバイス今後もしっかり覚えておきます。

関連するQ&A

  • マウスカーソルを指定の画像を用いて変更するには?

    Javaアプレット上に表示されるマウスカーソルの変更方法についての質問です。 setCursorメソッドを用いての予め用意されたカーソルに変更するのではなく、特定の画像を使用してマウスカーソルを変更したいのですがどうすれば良いでしょうか? 自分では以下の様に試してみたのですがマウスカーソルは変更されませんでした。 JLabel label = new JLabel(); ImageIcon icon = new ImageIcon("image/icon.gif"); label.setIcon(icon); できればメソッド名だけでなく簡単なサンプルをつけて頂けると幸いです。 皆様宜しくお願い致しますm(_ _)m

    • ベストアンサー
    • Java
  • Javaのプログラミング手伝ってください

    以下のソースコードを応用して、添付画像のような数字のかかれた画像を3つ並べてそれを回して7を揃えるというゲームを作りたいのですが全く進みません。どなたか完成させてくださいm(__)m使用する画像のファイル名は「slot1.jpeg」~「slot7.jpeg」です。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; public class OneSlot extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; final int MAX = 7; Timer timer = new Timer(150 , this); JLabel label= new JLabel("スタートで始まるよ",JLabel.CENTER); JButton[] bt = {new JButton("スタート"),new JButton("ストップ")}; JLabel slot= new JLabel(new ImageIcon("Slot1.jpg"),JLabel.CENTER); ImageIcon[] slot_icon = new ImageIcon[MAX]; int iCount = 0; OneSlot(String title) { super(title); timer.setActionCommand("timer"); setBounds(200, 200, 230, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for(int i = 0;i < slot_icon.length; i++) slot_icon[i] = new ImageIcon("Slot" + (i+1) + ".jpg"); add("North",label); add("Center",slot); JPanel p = new JPanel(); for (int i = 0; i < bt.length;i++) { bt[i].addActionListener(this); p.add(bt[i]); } add("South",p); setVisible(true); } public static void main(String[] args) { new OneSlot("スロットマシン"); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("timer")) { if(++iCount == slot_icon.length) iCount = 0; slot.setIcon(slot_icon[iCount]); } if(e.getSource() == bt[0] && !timer.isRunning()) { label.setText("7が当たりだよ"); timer.start(); } else if(e.getSource() == bt[1] && timer.isRunning()) { if(iCount+1 == MAX) label.setText("やった!!おめでとう"); else label.setText("残念でした"); timer.stop(); } } }

  • Jlabel?の上に2つ画像を載せクリックを識別

    JLabelを使えばいいのかよくわからないのですが掲示した 画面のように背景色に薄い赤を指定して2つの矢印画像を 表示します。その矢印の中央に年月を表示したいと思っています。 また、右の矢印をクリックしたら翌月の年月が表示され 左の矢印をクリックしたら前月の年月が表示したいです。 これをswingで完成したいと思っています。 また各コンポーネントは setBounds(int x,int y,int width,int height)で出来ると助かります。 ImageIcon leftIcon = new ImageIcon("./img/left.gif"); ImageIcon rightIcon = new ImageIcon("./img/right.gif"); JLabel label = new JLabel(); label.setText("2010年10月"); label.setIcon(leftIcon); label.setLocation(20,0); label.setSize(170, 20); label.setBackground(Color.white); label.setOpaque(true); ここから先がわかりません どうしても1つの画像と1つのテキストしか表示できません。

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

    ソースの中の一文ですが、 そのパスを相対パスに変えるにはどうしたらいいですか? <body stylesrc="●●●.htm" background="file:///E:/My%20Webs/images/●●●.gif" bgproperties="fixed"> 未熟者ですみません。 勉強の傍らお聞きしています。

  • 一つにまとめたい

    最近JAVAプログラミングをやりはじめました。 netbeansで作成しています。 文章を入力し、ドラッグしてもらい格納ボタンを押すと下に表示されます。 ドラッグした文字でいいならOKボタンを押します。 押すと配列に格納されます。 表示を押すと配列の中身が見えます(これは少し適当な作りですが) 今の段階ではこれでうまくいきます。ですがどの配列に入れるか選択したい場合に困っています。 「配列2に格納」というボタンを作った場合、配列2に格納するようにするにはどうすればよいでしょうか? 今の段階では「配列に格納」というボタンは実際はドラッグした文字しか表示していませんが、本来は複数のボタンを配置してボタンにより動作を変えたいのです。ただ同じものを使いたいのです。わざわざ別のボタンやテキストエリアを作るのは無駄ですし。 ただ色々試してもエラーが出てしまい実行できずにいます。 ソースを載せておきます。お願いします。 package javaapplication5; public class sample11 extends javax.swing.JFrame { int i=0; String word1; String[] test = new String[10]; /** Creates new form sample11 */ public sample11() { initComponents(); } @SuppressWarnings("unchecked") private void initComponents() { word = new javax.swing.JTextField(); jButton1 = new javax.swing.JButton(); SelectWord = new javax.swing.JTextField(); Ok = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); Show = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); ShowResult = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); word.setText("文章を入力"); jButton1.setText("配列に格納"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); Ok.setText("OK"); Ok.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { OkActionPerformed(evt); } }); jLabel1.setText("で構いませんか?"); Show.setText("表示"); Show.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ShowActionPerformed(evt); } }); ShowResult.setColumns(20); ShowResult.setRows(5); jScrollPane1.setViewportView(ShowResult); (文字数の都合でここにあったレイアウトに関する記述は削除しました) private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed word1 = word.getSelectedText(); SelectWord.setText(word1); } private void OkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OkActionPerformed test[i] = SelectWord.getText(); ++i; }//GEN-LAST:event_OkActionPerformed private void ShowActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ShowActionPerformed for(int j=0;j<i;j++){ ShowResult.setText(ShowResult.getText()+test[j]+"\n"); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new sample11().setVisible(true); } }); } private javax.swing.JButton Ok; private javax.swing.JTextField SelectWord; private javax.swing.JButton Show; private javax.swing.JTextArea ShowResult; private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField word; // End of variables declaration }

    • ベストアンサー
    • Java
  • JButtonの画像をactionPerformedメソッド内で再描画

    JButtonの画像をactionPerformedメソッド内で再描画したい。 以下のソースのようにして、再描画したいのです。 setIconメソッドではなく、 JButtonに対して描画したものに対して再描画したいです。 Graphics2DクラスについてJAVA APIで調べましたが、 仕組の理解に至りませんでした。 仕組みと方法を教えて頂きたいです。 よろしくお願いいたします。 import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; public class test extends JFrame implements ActionListener{ JButton b= new JButton(); public static void main(String a[]) { new test(); } public test() { super(); this.setSize(100,100); b.addActionListener(this); b.add(new Zoom(new ImageIcon("img1.jpg"),0,0,50,50)); this.add(b); this.setVisible(true); } class Zoom extends JComponent { private static final long serialVersionUID = 1L; private ImageIcon icon = null; private int x = 0; private int y = 0; private int h = 0; private int w = 0; private double scale = 1.0d; public Zoom(ImageIcon icon, int x, int y, int w, int h) { super(); this.icon = icon; this.x = x; this.y = y; this.w = w; this.h = h; } public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.scale(scale, scale); ////////////////////////////////// //画僧を再描画したい。 //g2.clearRect(0, 0, 80, 80);//× g2.drawImage(icon.getImage(), x, y, w, h, this); } } public void actionPerformed(ActionEvent e) { if(e.getSource()==b){ System.out.print("ok"); //this.repaint();//× //b.repaint();//× b.add(new Zoom(new ImageIcon("img2.jpg"),0,0,50,50));//(再描画できない) //b.setIcon(new ImageIcon("img2.jpg"));//ok(再描画出来る) } } }

    • ベストアンサー
    • Java
  • Jave Swing 画像表示わからない

    java swingでGUIをプログラミングしている者です。 JLabelにImageIconの画像を貼り付けるプログラムです。↓ //画像を表示するプログラム //インポート import javax.swing.*; import java.awt.*; import java.awt.event.*; class gazopro extends JFrame{ JLabel l1; JButton b1; JPanel p; public static void main(String args[]) { //ウィンドウを作成また設定 gazopro frame = new gazopro(); frame.setBounds(300,200,700,400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } gazopro(){ //コンポーネントを作成 p = new JPanel(); add(p); b1 = new JButton("画像を表示"); p.add(b1); ImageIcon icon = new ImageIcon("image.jpg"); l1 = new JLabel(icon); p.add(l1); } }   わからないところは、ImageIcon icon = new ImageIcon("image.jpg");のところです。 ImageIconの引数は、プログラミングを行っているパソコン(OS は Windows)のマイコンピューター→ Cドライブ→ MyJava→ image.jpgを指定しましたがこれで合ってますか? このプログラムでは、画像が表示されませんでした。 どうすればいいでしょうか? 解説と、ご指導宜しくお願いします。

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

    ど素人です 改行の関係でimportは省略してます labelにActionListenerが登録できないのですが、なぜでしょうか class test extends JFrame{ test() { getContentPane().setLayout(new FlowLayout()); JLabel label = new JLabel("てすと"); JButton b1 = new JButton("OK"); b1.addActionListener(label); getContentPane().add(b1); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("JButtonTest"); setSize(200, 100); setVisible(true); } public static void main(String[] args) { new test(); } } class LetLabel extends JLabel implements ActionListener{ public void LetLabe(){ } public void actionPerformed(ActionEvent ae){ } }

    • ベストアンサー
    • Java
  • 画像からヒストグラムを作りたいのですが

    画像からヒストグラムを計算し、それをグラフにしてあらわしたいと思っています。プログラムは以下のようなところまでできており、TextFieldにファイル名を入力し、EnterkeyもしくはOpenを押すと左下にその画像が表示されるところまでできています。 Startを押すと、その画像のRGBヒストグラムを計算し、赤、緑、青各色のグラフを三つ右下に表示したいのですがGraphicsの使い方や、BufferedImageの使い方がわからず四苦八苦しております。ヒストグラムをしては横区間を16としてやりたいと思っております。自分なりにはヒストグラム値を16で割り、その数値をもとにGraphicsオブジェクトに与えてそれをもとに描写するという方向で作成していましたがわたくしには難しく頓挫してしまいました。どうぞよろしくお願いいたします。 /*ここからソース*/ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.imageio.*; import java.io.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main { public static class ActionB1 implements ActionListener { JTextField input; JLabel pict1; JFrame frame2; public ActionB1(JTextField input0,JLabel pict10,JFrame A0){ input =input0; pict1=pict10; frame2 = A0; } public void actionPerformed(ActionEvent e){ if(getClass().getResource(input.getText())==null){ pict1.setText("file not found!!!"); } else { ImageIcon temp =new ImageIcon(getClass().getResource(input.getText())); pict1.setIcon(temp); } pict1.repaint(); } } public static class ActionB2 implements ActionListener{ JLabel pict2; JTextField input; JFrame frame3; public ActionB2(JTextField input0,JLabel pict20,JFrame A0){ input =input0; pict2=pict20; frame3=A0; } public void actionPerformed(ActionEvent e){ File filename = new File(input.getText()); BufferedImage Image = null; try { Image = ImageIO.read(filename); } catch (IOException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); } //ここからわかりません } public static void main(String[] args){ JFrame frame =new JFrame("タイトル"); frame.setSize(600,400); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JButton b1 =new JButton("OPEN"),b2=new JButton("START"); JTextField t1 = new JTextField(30); p1.add(t1); p1.add(b1); p1.add(b2); b1.setBounds(350,10,100,20); b2.setBounds(460,10,100,20); t1.setBounds(110,10,230,20); p1.setBounds(20,10,80,20); frame.getContentPane().add(b1); frame.getContentPane().add(b2); frame.getContentPane().add(t1); frame.getContentPane().add(p1); p2.setLayout(new GridLayout(1,2)); JLabel pict1= new JLabel(),pict2= new JLabel(); p2.add(pict1); p2.add(pict2); ActionB1 actB1 = new ActionB1(t1,pict1,frame); ActionB2 actB2 = new ActionB2(t1,pict2,frame); b1.addActionListener(actB1); b2.addActionListener(actB2); t1.addActionListener(actB1); frame.getContentPane().add(p1,BorderLayout.NORTH); frame.getContentPane().add(p2,BorderLayout.CENTER); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

    • ベストアンサー
    • Java
  • Java(指定した配列に値が格納されない)

    指定した配列に対して、値(画像)が挿入されずに困っています。 プログラムの概要を説明します。 パネル上に2次元配列[10][10]のボタンと3つのコンボボックスを造りました。 そしてコンボボックスは、行のインデックスを指定するもの、列のインデックスを指定するもの、 指定した場所に対して値(画像)を設定するもの、の3つでこれらが左から並んでいます。 現在の状況では、行と列に対してどのインデックスを指定しても、必ず[2][2]の値(画像)が変わってしまいます。 まだJavaは経験が浅いので、理由がわからず困っています。 よろしくお願いします。 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class GUISwing18 extends JFrame implements ActionListener{ JButton[][] button = new JButton[10][10]; //ボタンに挿入する画像 final ImageIcon black = new ImageIcon("./image/black.gif"); final ImageIcon white = new ImageIcon("./image/white.gif"); final ImageIcon empty = new ImageIcon("./image/empty.gif"); public static void main(String[] args) { new GUISwing18(); } GUISwing18(){ getContentPane(); JPanel mainpanel = new JPanel(); mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS)); JPanel subpanel = new JPanel(); subpanel.setLayout(new GridLayout(10,10)); //ボタンを作る for(int i = 0 ; i < 100 ; i++){ button[i/10][i%10] = new JButton(black); subpanel.add(button[i/10][i%10]); } mainpanel.add(subpanel); //コンボボックスを設定 JPanel cb = new JPanel(new GridLayout(1,0)); JComboBox row = new JComboBox(); JComboBox side = new JComboBox(); JComboBox value = new JComboBox(); row.addItem("0"); side.addItem("0"); value.addItem("empty"); row.addItem("1"); side.addItem("1"); value.addItem("black"); row.addItem("2"); side.addItem("2"); value.addItem("white"); row.addItem("3"); side.addItem("3"); row.addItem("4"); side.addItem("4"); row.addItem("5"); side.addItem("5"); row.addItem("6"); side.addItem("6"); row.addItem("7"); side.addItem("7"); row.addItem("8"); side.addItem("8"); row.addItem("9"); side.addItem("9"); cb.add(side); cb.add(row); cb.add(value); row.addActionListener(this); side.addActionListener(this); value.addActionListener(this); mainpanel.add(cb); getContentPane().add(mainpanel); setSize(350,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent e) { JComboBox row = (JComboBox)e.getSource(); JComboBox side = (JComboBox)e.getSource(); JComboBox value = (JComboBox)e.getSource(); int x = row.getSelectedIndex(); int y = side.getSelectedIndex(); int z = value.getSelectedIndex(); switch(z){ case 0: button[x][y].setIcon(empty);break; case 1: button[x][y].setIcon(black);break; case 2: button[x][y].setIcon(white); break; } } }

    • ベストアンサー
    • Java

専門家に質問してみよう