• ベストアンサー

javaのコンパイルエラーが解決できません。

http://plaza.rakuten.co.jp/kakuekiteisha5/のプログラムをコンパイルしようとすると、 DrawMainColorChangable.java:93: ここにインタフェースが必要です。 class ColorListener implements ChangeListener{ ^ DrawMainColorChangable.java:134: addChangeListener(javax.swing.event.ChangeListe ner) (javax.swing.colorchooser.ColorSelectionModel 内) を (ColorListener) に適用 できません csm.addChangeListener(cl); ^ エラー 2 個 とエラーが表示されます。 なぜエラーになるのでしょうか。よろしくお願いします。

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

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

  • ベストアンサー
  • zionic
  • ベストアンサー率39% (31/79)
回答No.3

main()メソッドで定義しているdaという変数ですが、変数を定義しているけど、オブジェクトを生成していないので、中身が空(null)です。 中身がないモノを使ってcl(ColorListener)を生成して、dcsmのリスナーに設定。その後、dscmを使ってjccを生成し、jcc.setColor()メソッドを呼んでますが、この時にColorListenerクラスstateChanged()も呼ばれてます。 ところが、ColorListenerのdrawApplicationという変数は、オブジェクトを生成するときに引数で指定されたdaをコピーしてるので空(null)です。なのに、jColorChooser.getColor()というメソッドが呼ぼうとしたため、NullPointerExceptionが発生しています。

takau710
質問者

お礼

回答ありがとうございました。解決しました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

多分 ChangeListener というインターフェースが見えていないんじゃないかな. このインターフェースはパッケージ javax.swing.event 中にあるはずなので, 最初の import がおかしかったりしませんか?

takau710
質問者

補足

ご回答ありがとうございます。 言われたとおりimportのところを少し直して ​http://plaza.rakuten.co.jp/kakuekiteisha5/にあるようにしました。 これだと、コンパイルは通りましたが、 実行すると、 Exception in thread "main" java.lang.NullPointerException at ColorListener.stateChanged(DrawMainColorChangable.java:99) at javax.swing.colorchooser.DefaultColorSelectionModel.fireStateChanged( Unknown Source) at javax.swing.colorchooser.DefaultColorSelectionModel.setSelectedColor( Unknown Source) at javax.swing.JColorChooser.setColor(Unknown Source) at DrawMainColorChangable.main(DrawMainColorChangable.java:136) と例外が出ます。 原因が全く分からないのでどなたかよろしくお願いします。

  • goold-man
  • ベストアンサー率37% (8365/22183)
回答No.1

掲出のURL(のプログラム)見ていませんが、java:93、java:134を検索してみましたか?(キャッシュで見ると「黄色」わかりやすいです)例えば後者はサイズが大きすぎるとか。

関連するQ&A

  • javaの課題でコンパイルエラーが出てきて困っています

    学校の授業でjavaの課題が出たのですが、 javakadai.java:41: ここにインタフェースが必要です。 class javakadaiPanel extends JPanel implements ActionListener,ActionEvent{ というエラーが出て困っています。 どなたか解決方法を教えてくれませんか? ソースは以下です。 よろしくお願いします。 import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JCheckBoxMenuItem; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JRadioButtonMenuItem; import java.awt.Container; public class JavaKadai { public static void main(String[] args) { JavaKadaiFrame frame = new JavaKadaiFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class JavaKadaiFrame extends JFrame { JavaKadaiFrame() { super(); setSize(300, 300); setLocationRelativeTo(null); setTitle("JavaKadai"); Container c = getContentPane(); c.add(new JavaKadaiPanel(getRootPane())); } } class JavaKadaiPanel extends JPanel implements ActionListener,ActionEvent{ Color color = Color.black; JCheckBoxMenuItem miR = new JCheckBoxMenuItem("R"); JCheckBoxMenuItem miG = new JCheckBoxMenuItem("G"); JCheckBoxMenuItem miB = new JCheckBoxMenuItem("B"); public JavaKadaiPanel(javax.swing.JRootPane root) { setBackground(Color.black); //メニューバーはJFrameのルートペインに追加 JMenuBar bar = new JMenuBar(); JMenu mnBack = new JMenu("BACK"); //メニュー構成 bar.add(mnBack); mnBack.add(miR); mnBack.add(miG); mnBack.add(miB); //ルートペインへメニューを追加 root.setJMenuBar(bar); miR.addActionListener(this); miG.addActionListener(this); miB.addActionListener(this); mnBack.setMnemonic('B'); //[Alt]+[B]でアクセス miR.setMnemonic('R'); //[R]でアクセス miG.setMnemonic('G'); //[G]でアクセス miB.setMnemonic('B'); //[B]でアクセス } public void actionPerformed(ActionEvent e){ int R = miR.isSelected() ? 255:0; int G = miG.isSelected() ? 255:0; int B = miB.isSelected() ? 255:0; color = new Color(R,G,B); repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); // 幅、高さ int height = g.getClipBounds().height; int width = g.getClipBounds().width; // 塗潰し g.setColor(color); g.fillRect(0, 0, width, height); } } まだ途中なので、現時点では不必要なimport文があります。 よろしくお願いします。

    • ベストアンサー
    • Java
  • コンパイルができません…

    プログラムは以下のようになってます。 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TEST extends InternalFrame implements ActionListener{    ---- 中略 ---- JPanel p = new JPanel(); p.setLayout(new GridLayout(x,y));    ---- 後略 ---- } コンパイルすると、次のようなエラーが出力されます。 シンボルを解決できません。 クラス GridLayout p.setLayout(new GridLayout(x,y));            ^ コンパイルができない理由が分かる方居られましたら、 ご教授願いたく存じます。 できれば、早急にお願いいたします。

    • ベストアンサー
    • Java
  • javaにおいてコンパイルをすると次のようなエラーが出てきます。

    javaにおいてコンパイルをすると次のようなエラーが出てきます。 力不足で解決することができません。 どうか力を貸してください。 エラーは以下のように出てきます。 よろしくお願いします。 シンボルがみつかりません シンボル: コンストラクタ DrawPanelMouseHandler(DrawPanel) 場所 : DrawPanelMouseHandler の クラス mouseHandler = new DrawPanelMouseHandler(this); mouseHandler = new DrawPanelMouseHandler(this);import java.awt.*; import java.util.ArrayList; import javax.swing.JPanel; import javax.swing.JButton; public class DrawPanel extends JPanel { ArrayList<Shape> shapeList = new ArrayList<Shape>(); DrawPanelMouseHandler mouseHandler; public void paintComponent(Graphics g) { super.paintComponent(g); for(Shape shape: shapeList){ shape.draw(g); } } public DrawPanel(){ mouseHandler = new DrawPanelMouseHandler(this); this.addMouseListener(mouseHandler); this.addMouseMotionListener(mouseHandler); ShapeFactory circleFactory = new CircleFactory(); UIToolButton circleButton = new UIToolButton(circleFactory, this, "Circle"); this.add(circleButton); } public void addShape(Shape s) { shapeList.add(s); repaint(); } } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class UIToolButton extends JButton implements ActionListener{ DrawPanelMouseHandler mouseHandler; ShapeFactory factory; public UIToolButton(ShapeFactory factory, DrawPanelMouseHandler mouseHandler, String text) { super(text); this.addActionListener(this); this.mouseHandler = mouseHandler; this.factory = factory; } public void actionPerformed (ActionEvent ae) { mouseHandler.setShapeFactory(factory); } }

  • JAVA コンパイル時のエラー

    JAVAの初心者です。 javacでコンパイルする際, gui は abstract でなく、java.awt.event.KeyListener 内の abstract メソッド keyReleased(java.awt.event.KeyEvent) をオーバーライドしません。 public class gui extends JFrame implements ActionListener,KeyListener { このようなエラー文がでます。 このエラー文の意味を教えていただけないでしょうか。 よろしくお願いします。

  • コンパイルエラー

    前の『Server Hangup』の質問とは別にこちらもお願いします。ちなみにあれは家のパソコンです。今回は会社のパソコンなんですが、こちらは同じようにTomcatをインストールしてhttp://localhost:8080/にアクセスするとちゃんと画面が表示されます。しかし、HelloServlet.javaがコンパイルできないのです。 これも本を読みながら同じようにやっているのですが・・・。 一体何が原因なのでしょうか? 環境はOSがWindows2000、j2sdk1.4.1、jakarta-tomcat-4.0.3-LE-jdk14です。 ファイルのあるディレクトリに移動して javac -classpath=%CATALINA_HOME%\common\lib\servlet.jar;%CLASSPATH% HelloServlet.java と入力すると以下のようなエラーになります。 HelloServlet.java:5: パッケージ javax.servlet は存在しません。 import javax.servlet.ServletException; ^ HelloServlet.java:6: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; ^ HelloServlet.java:7: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletRequest; ^ HelloServlet.java:8: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletResponse; ^ HelloServlet.java:14: シンボルを解決できません。 シンボル: クラス HttpServlet 場所 : HelloServlet の クラス public class HelloServlet extends HttpServlet {   … エラー 8 個 質問内容は検索したのですが、同じようなのは、コードの書き間違いだったようで 回答は得られませんでした。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • .javaのファイルがコンパイルできない

    .javaファイルをコンパイルしようと思いデスクトップ上にファイルを置きコマンドプロンプトでjavacコマンドを使用したところ Sample016.java:3: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; Sample016.java:15: シンボルを見つけられません。 などのエラーが出てしまいます。 どのような解決方法があるのでしょうか。 また、この問題の解決にjavaのファイルに入っていたsrc.zipは関係あるのでしょうか? src.zipを解凍したところjavaxなどが入っていたため何かに使うののだろうかと思ったのですが もうひとつ質問があるのですが、もしコンパイルすることができtomcatを使って動作を確認する時はROOT以下に.javaと.classを置いてjavaの方を呼び出せばいいのでしょうか? 急いで書いてしまったのでわかりにくいかもしれませんが、わかるかたいらっしゃいましたらよろしくお願いします。

  • コンパイルエラー

    J2sdkeeをインストールしてコンパイルをしようとすると、 一行目の import javax.ejb.*; の部分で javax.ejbパッケージは存在しません。 というメッセージがでてコンパイルエラーになります。 pathとJAVA_HOMEとJ2EE_HOMEとCPATHを設定したのですが、何が原因なのかわかりません。 わかる方教えてください。

    • ベストアンサー
    • Java
  • JAVAについて。コンパイルができません

    public class Main { public static void main(String[] args){ System.out.println("Hello World"); } } 上のソースで記述して、コマンドプロンプトでコンパイルしようとすると 下のような表示が起きます C:\Program Files\Java\jdk-12.0.1\bin>javac Main.java Main.java:1 エラー: Mainの書き込み中にエラーが発生しました: C:\Program Files\Java\ jdk-12.0.1\bin\Main.class public class Main { ^ エラー1個 何が原因でコンパイルされないかわからないです。 わかるかたいましたらよろしくお願いします。

  • コンパイルエラーの対応

    下記のプログラムをコンパイルしたらエラーが発生しました。 プログラム自体は本をそのまま書き写したのですが、何がいけないのでしょう。 教えてください。よろしくお願いします。 Javaのバージョンは1.3.1です import java.applet.*; import java.awt.*; import java.awt.event.*; public class sample3 extends Applet implements ActionListener { Button bt; public void init() { bt = new Button("押します!"); bt.addActionListener(this); add(bt); } public void actionperformed(ActionEvent ae) { bt.setLabel("押しました!"); } } -----------------エラー内容----------------------- sample3.java:4: sample3 は abstract として宣言する必要があります。 actionPerformed(java.awt.event.ActionEvent) を sample3 で定義しません。 public class sample3 extends Applet implements ActionListener ^

    • ベストアンサー
    • Java
  • サーブレットのコンパイルエラー

    会社の開発環境でコンパイルできたサーブレットを 自宅でコンパイルしようとすると、下のエラーが出てしまい困っています。だれか知恵を貸してください。 ちなみに自宅の開発環境は j2sdk1.4.0とtomcat3.2.3 です。 よろしくお願いします。 ----------------------------------- ReserveControlServlet.java:26: シンボルを解釈処理できません。 シンボル: メソッド setCharacterEncoding (java.lang.String) 位置 : javax.servlet.http.HttpServletRequest の インタフェース request.setCharacterEncoding("JISAutoDetect"); ^ ReserveControlServlet.java:33: シンボルを解釈処理できません。 シンボル: メソッド getRequestDispacher (java.lang.String) 位置 : javax.servlet.ServletContext の インタフェース sc.getRequestDispacher("/index.jsp").forward(request, response); ------------------------------------

    • ベストアンサー
    • Java

専門家に質問してみよう