• 締切済み

クリップボードからの取得プログラム

ボタンを押すと、テキストエリアにクリップボードの中身を代入する単純なプログラムです。 しかしコンパイルエラーが出てしまいます(~_~;) getTransferDataFlavor()メソッドがないからアブストラクトにしろ、というエラーです。 あるサイトから拾ったものを組み合わせたのですが、 getTransferDataFlavor()メソッドはつかっておらず、 なぜコンパイルエラーなのかわかりません。 お分かりになる方、ぜひぜひおしえてください<m(__)m> ボタンクリック public void actionPerformed(ActionEvent e) { Clipboard cb = getToolkit().getSystemClipboard(); Transferable st = cb.getContents(this); try{ String ds = (String)st.getTransferData(DataFlavor.stringFlavor); txt.setText(ds); }catch(Exception ex){}

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

みんなの回答

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

> getTransferDataFlavor()メソッドがないからアブストラクトにしろ、というエラーです。 > getTransferDataFlavor()メソッドはつかっておらず、なぜコンパイルエラーなのかわかりません。 getTransferDataFlavorメソッドがないのがエラーだと自分で言っているじゃないですか。 getTransferDataFlavorsメソッドは、java.awt.datatransfer.Transferableというインタフェースのメソッドです。 あなたのプログラムに、Transferableインタフェースを実装するクラスがありませんか? あるならば正しく実装されていますか?

azicyan
質問者

お礼

わかりました! Transferableインターファイスを インプリメンツしなければいけないと思い込んでいました。 インプリメンツをはずしたら、コンパイルがとおり実行できました! >getTransferDataFlavorメソッドがないのがエラーだと自分で言っているじゃないですか。 例題でgetTransferDataFlavorメソッドなんか使っていないのに何でかな?と思ったんです。 余計に”Transferableインターファイスをインプリメンツ”していたのが原因でした!

関連するQ&A

  • 【JAVAエラー】互換性のない型、演算子が適用されませんetc

    学校の課題で電卓を作っています。 dentaku.BOはabstractではなく、java.awtevent.ActionListener内の abstractメソッド actionPerformed(java.awt.event.ActionEvent) をオーバーライドしません というエラーと、 互換性のない型 検出値:java.lang.String 期待値:boolean if(fugo="+") ^ と、 演算子 - はjava.lang.String,java.lang.String に適応出来ません str= num1-num2; ^ この3種類のエラーはざくざく出てくるのですが、具体的にどう修正したらいいのか分かりません。どなたか教えてくださいm(_ _)m ソース載せようとしたら文字数オーバーしてしまいましたorz

  • イベントの宣言について

    public class J_applet extends Applet implements ActionListener ,ItemListener { と宣言したところ、 J_applet は abstract でなく、java.awt.event.ActionListener 内の abstract メソッド actionPerformed(java.awt.event.ActionEvent) をオーバーライ ドしません。 とエラーがでました。 インポート宣言はきちんとしました。 上記のような書き方はもしかして出来ないんでしょうか?

    • ベストアンサー
    • Java
  • カンマ付数字をDBへ追加するにはどうしたらいいですか?

    txt1.setText(15,200) btn1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{ // **接続情報** String drv = "org.postgresql.Driver"; String url = "jdbc:postgresql:postgres"; String usr = "postgres"; // **DBへの接続、問合せ** Class.forName(drv); Connection cn = DriverManager.getConnection(url, usr, pw); Statement st = cn.createStatement(); String qry1 = "INSERT INTO getuji (数字) VALUES ( "+ txt1.getText() + ");"; st.executeUpdate( qry1 ); // **DB切断** st.close(); cn.close(); } catch(Exception f){f.printStackTrace();} } }); txt1にカンマの付いている数字を入れるとエラーが出てしまいます。 カンマがなければエラーが起きないのですが何か良い方法はないでしょうか? DBのgetuji表のテーブル(数字)のデータ型はintegerです。なのですがこれを変えた方がいいのでしょうか? わかる方がいらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • Java
  • Javaのクラスの中身について

    Javaのクラスの中身について メソッドの中身などを見ることはできないのでしょうか? たとえばJTextComponentのpasteメソッドの中は Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable obj = clipboard.getContents(null); String str = (String)obj.getTransferData(DataFlavor.stringFlavor); というように クリップボードの文字列を取得してそれをコンポーネントに追加していると思うのですが、 実際に中身がわからなければオーバーライドなど 細かいことができないのではないかと、ふと思いました。 公式のライブラリや、javap、参考書などでは引数、戻り値、アクセス制限などはわかるのですが それではカバーできない問題が最近よく起きます。 今現在はJava上級者が作っているようなサイトを やりたいことに応じて徹底的に調べてなんとか情報をいただいているのですが、 時間的に非常に非効率で死にそうです。 アプリケーションの開発ということの本質?からずれているかもしれませんが、 知りたいのだからしょうがないというか・・・

    • ベストアンサー
    • Java
  • javaのプログラムについて

    初めまして。java初心者のものです。 コンピュータとじゃんけんをするというプログラムをつくりたいのですが、 コンパイルしたところ、次のようなエラーが出ました。 「シンボルが見つかりません。」 どこをどう直せばよいのでしょうか。お教え願います。 以下が私のプログラムです。 import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.applet.AudioClip; class Zyanken extends YJFrame implements ActionListener{ JButton[] btn; JPanel panel; Zyanken(String s, int w, int h,int b){ super(s,w,h,b); String[] ttl={"グー","チョキ","パー","Exit"}; String[] tips={"グーです","チョキです","パーです","終了します"}; int i; setUp(); Icon[] ic=new Icon[4]; for(i=0;i<4;i++) ic[i]=new ImageIcon("icon"+i+".gif"); btn=new JButton[4]; for(i=0;i<4;i++){ btn[i]=new JButton(ttl[i],ic[i]); btn[i].setToolTipText(tips[i]); btn[i].addActionListener(this); } JPanel p=new JPanel(); for(i=0;i<4;i++) p.add(btn[i]); p.setBackground(Color.pink); pane.add(p,BorderLayout.SOUTH); panel=new JPanel(); pane.add(panel,BorderLayout.CENTER); } public void actionPerformed(ActionEvent e){ int com=(int)(Math.random()*4); if(com==1){ panel.setText("COMはグーです。"); } else if(com==2){ panel.setText("COMはチョキです。"); } else{ panel.setText("COMはパーです。"); } if(e.getSource()==btn){ if(com==1){ panel.setText("あいこです。"); } else if(com==2){ panel.setText("あなたの勝ちです。"); } else{ panel.setText("あなたの負けです。"); } } else if(e.getSource()==btn){ if(com==1){ panel.setText("あなたの負けです。"); } else if(com==2){ panel.setText("あいこです。"); } else{ panel.setText("あなたの勝ちです。"); } } else{ if(com==1){ panel.setText("あなたの勝ちです。"); } else if(com==2){ panel.setText("あなたの負けです。"); } else{ panel.setText("あいこです。"); } } } } 大変恐縮ですが、よろしくお願いします。

  • JEditorPaneでwebページを表示

    JEditorPaneを使ってwebページを表示させて いるのですが、コンボボックスの選択したアドレスのwebページの表示はできるのですが、検索エンジンを 使って検索してもまったく反応がありません。 何か他のコードを書きたさなければならないのでしょうか? ------------------------------------ JEditorPane html = new JEditorPane(); String[] choise ={"http://news.goo.ne.jp/", "http://www.google.co.jp/","http://www.excite.co.jp/", "http://headlines.yahoo.co.jp/hl",}; JComboBox cb = new JComboBox(choise); html.addHyperlinkListener(this); html.setContentType("text/html"); html.setEditable(false); cb.setEditable(true); public void actionPerformed(ActionEvent e) { try { html.setPage((String)cb.getSelectedItem()); } catch(Exception err) { JOptionPane.showMessageDialog( this,"読み込みエラーが発生しました", "エラー", JOptionPane.ERROR_MESSAGE); } } public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) return; String url = e.getURL().toString(); try { html.setPage(url); } catch(Exception err) { } ---------------------------------------

    • ベストアンサー
    • Java
  • コンパイルエラーの対応

    下記のプログラムをコンパイルしたらエラーが発生しました。 プログラム自体は本をそのまま書き写したのですが、何がいけないのでしょう。 教えてください。よろしくお願いします。 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
  • ロックの取得とwaitメソッド

    インスタンスに対してwait()メソッドを実行するには、そのインスタンスのロックを取得していなくてはならないと思っています。 method2()がエラーになるのと、method3が正常に動作するのは、 インスタンスに対するロックの有無で理解できます。 ただ、下記のソースでmethod()がエラーとならない動作が理解でき ませんでした。 このメソッドだと、メソッド単位ではロックがかかっていますが、 synchronizedでないメソッドが存在すれば別スレッドからアクセスでき るので、インスタンスに対するロックを取得しているわけではないと思 います。 私の理解が間違っているのでしょうか。 class MyClass { String str = new String("a"); public synchronized void method(){ try{ wait(); } catch (Exception e) { e.printStackTrace(); } } public void method2(){ synchronized (str) { try{ wait(); }catch(Exception e){ e.printStackTrace(); } } } public void method3(){ synchronized (this) { try{ wait(); }catch(Exception e){ e.printStackTrace(); } } } } class UseMyThread1 { public static void main(String args[]) { MyClass mc1 = new MyClass(); MyClass mc2 = new MyClass(); MyClass mc3 = new MyClass(); //mc1.method();//ここはエラーにならない System.out.println("*********"); //mc2.method2(); //ここはエラーになる System.out.println("*********"); //mc3.method3();//ここはエラーにならない } }

    • ベストアンサー
    • Java
  • 数字を一瞬だけ表示(似たような質問すみません)

    同じような質問を http://oshiete1.goo.ne.jp/kotaeru.php3?q=1604534 でしたのですが 今度は画像ではなく数字でやってみようと思ったのですが ボタンを配置しそのボタンが押されたら 一瞬だけ数字を表示するようにするためボタンの アクションリスナーにおいて public void actionPerformed(ActionEvent event){ numlabel.setText("123"); try{ Thread.sleep(Msec); }catch(InterruptedException ex){ ex.printStackTrace(); } numlabel.setText(" "); } のようにしたのですがうまくいきませんでした。 (numlabelはJLabel) 自分が根本的にわかっていないのだと思いますが よろしくお願いします。

    • ベストアンサー
    • Java
  • 一つにまとめたい

    最近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

専門家に質問してみよう