参照されないクラスSentenceActionperformedのtext1,textの部分がエラーとなります

このQ&Aのポイント
  • 参照されないクラスSentenceActionperformedのtext1,textの部分がエラーとなります。クラスは呼ばれています。
  • 二つとも参照されていないのです。参考になるページを見ると同じような書き方しているのに問題ないのでどこが違うのかわかりません。
  • この書き方では参照されないのだと思いますが、正しい書き方がわかりません。別のクラスにしていく方法でいきたいです。
回答を見る
  • ベストアンサー

参照されない

クラスSentenceActionperformedのtext1,textの部分がエラーとなります。クラスは呼ばれています。二つとも参照?されていないのです。 参考になるページをみると同じような書き方しているのに問題ないのでどこが違うのかわかりません。この書き方では参照でなきないのだと思いますが正しい書き方がわかりません。別のクラスにしていく方法でいきたいです。 うまく行けばtextの文字がtext1に表示されます。 よろしくお願いします。 import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JTextArea; import javax.swing.JTextField; public class sample extends javax.swing.JFrame{ public sample() { init(); } private void init() { JTextField text = new JTextField(25); JTextArea text1 = new JTextArea(10,25); Container mainFrame = getContentPane(); mainFrame.setLayout(new FlowLayout()); mainFrame.add(text); mainFrame.add(text1); mainFrame.setBounds(0, 0, 500, 500); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); SentenceActionPerformed aa = new SentenceActionPerformed(); text.addActionListener(aa); } class SentenceActionPerformed implements ActionListener{ public void actionPerformed(ActionEvent evt) { text1.setText(text.getText()); } } public static void main(String args[]) { new sample().setVisible(true); } }

  • Java
  • 回答数6
  • ありがとう数5

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

  • ベストアンサー
  • ww-_-ww
  • ベストアンサー率51% (46/89)
回答No.6

失礼しました。 public class aa{  private int cc = 1;  public int getCc(){   return cc;  } } では演算できませんので public class aa{  public int cc = 1; } ですね。 ただアクセサメソッドを使うことも今後のためにもオススメします。

その他の回答 (5)

  • ww-_-ww
  • ベストアンサー率51% (46/89)
回答No.5

スコープも大事ですが、インスタンスがどうなっているかも把握しなければダメですね。 public class aa{ int cc = 1; } を以下に変更 public class aa{  private int cc = 1;  public int getCc(){   return cc;  } } public class tt{  aa test = new aa();  test.cc =+1; } は以下に変更 public class tt{  public int aanocc = 0;  public tt(){   aa test = new aa();   test.cc =+1;   aanocc = test.getCc();  } } public class ss{ ここでttで作成された変数を参照したい } は以下に変更 public class ss{  tt t = new tt();  int i = t.aanocc; //ここでtから参照可能 } 上記のようにインスタンスとスコープが満たせていないと参照できません。 これ、実行していませんが、おそらく参照できるかと思います。 参考になりましたかね(^^;)

  • momenlara
  • ベストアンサー率60% (6/10)
回答No.4

textとtext1は、sampleクラスのフィールドとして定義する必要がありますね。 クラスの定義とフィールドの定義、あと変数のスコープについてもう少し調べてみることをおすすめします。 できるだけ小さな、動くサンプルをネットで見つけてきて、 それを見ながら全く同じものを書いてみるといい勉強になるかもしれません。 コピーアンドペーストするのではなくて、 自分の手で書き写すのが遠回りのようで近道だったりします。

kbyshrk
質問者

お礼

解答ありがとうございます。一度調べてみます。 public class aa{ int cc = 1; } public class tt{ aa test = new aa(); test.cc =+1; } public class ss{ ここでttで作成された変数を参照したい } かなりはしょったプログラムですが、aaで呼ばれるとint型のccが作成されます。ssで先ほど作成したccを参照したいです。 皆さんの解答で参照できる範囲というのは理解できましたが、そこからどうすればというのがわかりません。

  • ww-_-ww
  • ベストアンサー率51% (46/89)
回答No.3

スコープもそうですが、これではコンパイルエラーになりませんか?

kbyshrk
質問者

お礼

コンパイルエラーにはならなかったです。

回答No.2

括弧の位置を間違えました… ついでにインデントしてみます。 public class sample {   public sample() {     int a = 1 ;   }   public hoge() {     a++ ;   }   public static void main(String args[]) {     new sample().hoge();   } }

kbyshrk
質問者

お礼

ありがとうございました。

回答No.1

簡単に書くと、以下のような事をしていますよね。 public class sample { public sample() { int a = 1 ; } public hoge() { a++ ; } } public static void main(String args[]) { new sample().hoge(); } aのスコープに注意です。

kbyshrk
質問者

お礼

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

関連するQ&A

  • テキストフィールドの文字をテキストエリアに表示する

    エラーも例外もないです。 但し今回の内容の"テキストフィールドに打ち込みエンターキーを文字をテキストフィールドに表示" が満たしてないですとりあえずソース乗せます mport java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class MyMemo { public static void main(String[] args) { JFrame Frame = new JFrame("課題"); Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Frame.setSize(500, 500); Frame.setLocationRelativeTo(null); Container contentPane = Frame.getContentPane(); // テキストフィールドのインスタンスを生成 final JTextField text = new JTextField();// テキストエリアのインスタンスを生成 text.addActionListener(new MyActionListener()); Frame.setVisible(true); final JTextArea Area = new JTextArea(5,0); // スクロールペインにテキストエリアを追加 JScrollPane scrollPane = new JScrollPane(Area); // パネルをコンポーネントに配置 contentPane.add(text, BorderLayout.NORTH); contentPane.add(scrollPane, BorderLayout.CENTER); Frame.setVisible(true); } static class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { } } } どう文字をテキストエリアに表示したらいいのかわからなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • 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
  • ボタンが表示されません

    //テキストパッドをつくっています。 //このプログラムはボタンが表示されませんなぜ? import java.awt.*; import javax.swing.*; class Test_Text extends JFrame{ public static void main(String args[]){ Sample_text st = new Sample_text(); JFrame jf = new JFrame("Test_Text"); JTextArea jt = new JTextArea(50,30); Container c = jf.getContentPane(); c.add(jt,BorderLayout.PAGE_START); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(EXIT_ON_CLOSE); } public void Sample_text(){ JButton j1,j2; j1 = new JButton("編集"); j2 = new JButton("保存"); setLayout(new FlowLayout()); this.add(j1); this.add(j2); } }

  • 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
  • setLineWrapの使い方

    初めまして、皆さん。馬鹿な初心者の悩みを聞いてください。 卒論に向けて、現在、JAVAでアプレットプログラムを書いているのですが、 TextAreaを自動改行させようとコンパイルをかけると、 以下のようなエラーがでてしまうのです。 Java初心者なので、非常に困っています。 どうか教えてくださいよろしくお願いいたします。 なお、実行環境は WindowsXP Home Edition JDK1.3.1_010 です。 --------------------ソース-------------------- /* TextArea改行用テスト */ import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; public class JTextArea extends JApplet{  public void init() {   JTextArea text = new JTextArea();   text.setLineWrap(true);   getContentPane().add(new JScrollPane(text));  } } --------------------エラー-------------------- JTextArea.java:12: シンボルを解決できません。  シンボル: メソッド setLineWrap (boolean)  場所 : JTextArea の クラス       text.setLineWrap(true);         ^ エラー 1 個

    • ベストアンサー
    • Java
  • メニューバーのプログラム

    javaで、メニューバーの項目を選んだら動作するプログラムを試しに組んでみようとしたのですがうまくいきません。 どう組めばいいか教えてください。 メニューバーの項目を選んだあとに出てくるメニューを選ぶと動作するプログラムは検索してすぐ出てくるのですが…。 下のプログラムはメニューバーのEndを押すと終了する、にならなかったプログラムです。 import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; class Test1 extends JFrame{ public static void main(String args[]){ Test1 frame = new Test1("タイトル"); frame.setVisible(true); } Test1(String title){ setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JMenuBar menubar = new JMenuBar(); JMenu menu1 = new JMenu("End"); menu1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } }); menubar.add(menu1); setJMenuBar(menubar); Container contentPane = getContentPane(); } }

    • ベストアンサー
    • 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); } }

  • キャレットの幅を設定したい。

    キャレットの幅を設定したい。 以下のソースで色を設定するメソッドはありますが、 キャレットの幅の設定の仕方が解りませんでした。 ご存じの方がおられましたら教えてください。 import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; class test extends JFrame{ public static void main(String args[]){ new test(); } test(){ this.setSize(300, 250); JPanel p = new JPanel(); JTextArea area2 = new JTextArea("test", 10, 10); area2.setCaretColor(Color.RED); p.add(area2); this.add(p, BorderLayout.CENTER); this.setVisible(true); } }

    • ベストアンサー
    • Java
  • javaでストップウォッチが上手く作れません

    あるサイトを参考にして作ってみたんですが うまく動いてくれません、多分おかしいところだらけですが どこがダメか教えてもらえるとありがたいです package timeP; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; public class timeC extends JFrame implements Runnable { private JPanel contentPane; private JTextField textField; private Thread th = null; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { timeC frame = new timeC(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public timeC() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 85); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.X_AXIS)); JPanel panel_3 = new JPanel(); contentPane.add(panel_3); panel_3.setLayout(new BorderLayout(0, 0)); textField = new JTextField(); panel_3.add(textField, BorderLayout.CENTER); textField.setColumns(10); JPanel panel_2 = new JPanel(); contentPane.add(panel_2); panel_2.setLayout(new BorderLayout(0, 0)); JButton JButtonstart = new JButton(" 開始 "); JButtonstart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th == null ) { th = new Thread ( ); th.start(); } } }); panel_2.add(JButtonstart, BorderLayout.CENTER); JPanel panel_1 = new JPanel(); contentPane.add(panel_1); panel_1.setLayout(new BorderLayout(0, 0)); JButton JButtonstop = new JButton(" 停止 "); JButtonstop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th != null ){ th = null; } } }); panel_1.add(JButtonstop, BorderLayout.CENTER); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(new BorderLayout(0, 0)); JButton btnNewButton_2 = new JButton("New button"); panel.add(btnNewButton_2, BorderLayout.CENTER); } @Override public void run() { //TODO 自動生成されたメソッド・スタブ int i; while ( th != null ){ i = Integer.parseInt( textField.getText() ); try { Thread.sleep(10000); if ( th == null ) break; } catch ( InterruptedException e ){ break; } textField.setText( Integer.toString( i + 1 ) ); } } }

  • javaのタイマープログラムの時間について

    下記のjavaのプログラムは、タイマー動作の確認プログラムです。 タイマーの起動時間を1msにし、1000回タイマーを起動しており トータルのタイマー時間は1秒と考えましたが、実際のタイマー時間は 20秒くらいかかります。 この件に関しまして、コメント頂けますと大変助かります。 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; public class TimerTest1 extends JFrame implements ActionListener{ Timer timer; JLabel label; int sec; public static void main(String[] args){ TimerTest1 frame = new TimerTest1(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true); } TimerTest1(){ sec = 0; label = new JLabel(); JPanel labelPanel = new JPanel(); labelPanel.add(label); timer = new Timer(1, this); getContentPane().add(labelPanel, BorderLayout.CENTER); timer.start(); } public void actionPerformed(ActionEvent e){ label.setText(sec + " sec"); if (sec >= 1000){ timer.stop(); label.setText(" timer_stop"); }else{ sec++; } } } 以上、宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう