• ベストアンサー

【AWT】別ウィンドウのLabel設定変更

はじめまして。tokushellと申します。 Javaを始めたばかりですが、学校の課題でAWTを用いて、アプリケーションをつくってます。 実行し、同時に2つのウインドウ(A・B)を表示している状態で、 Aウインドウ内のButton押すとBウインドウのLabelのTextが変更される。 ということがしたいです。 どうすれば別ウィンドウの設定を変えることができるのでしょうか? よろしくお願い致します。

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

こんな感じかな?? メインフレームのボタンを押すと、サブフレームのラベルが変わります。 awt出はなく、swingで書いてみました。 後は、自分なりに、改良して、見てください。 public class frameab extends javax.swing.JFrame { frameb fb; /** Creates new form frameab */ public frameab() { fb = new frameb("bb"); fb.setBounds(100, 100, 100, 100); fb.setVisible(true); initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); getContentPane().setLayout(null); jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); getContentPane().add(jButton1); jButton1.setBounds(260, 240, 75, 21); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-408)/2, (screenSize.height-334)/2, 408, 334); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { fb.jl.setText("変わったよ"); // TODO add your handling code here: } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new frameab().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; // End of variables declaration } class frameb extends JFrame{ JLabel jl=null; frameb(String string){ jl = new JLabel("TEST"); this.add(jl); jl.setBounds(10, 10, 200, 50); } }

tokushell7
質問者

お礼

回答ありがとうございます! 教えていただいたソースをひとつひとつ確かめ理解することができました。 応用し、AWTでのやりかたもわかりそうです。 誠にありがとうございました。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 どのように2つのウィンドウを開いているかわからないので的確な回答になるかわかりません。 Bウィンドウ内にLabelのtextを変更するメソッドを用意する。 public void setText ( final String _text ) { f_label.setText ( _text ); } Aウィンドウ内のactionPerformedにボタンが押されたときのイベントで上記のメソッドを呼ぶ。 これで変更できると思います。 Aウィンドウ内でBウィンドウを生成して表示しているのであれば、 BWindow bWindow = new BWindow(); bWindow.setText ( "ボタンが押されたのでラベルを変更します。"); という感じになると思います。 まずはどんな風に2つのウィンドウを立ち上げようとしているのか補足していただければもっと詳しく回答できると思います。

tokushell7
質問者

お礼

解決することができました。 ありがとうございました!

tokushell7
質問者

補足

回答ありがとうございます! 私はEclipseにVisualEditorをプラグインさせて使っています。 私は同じCLASSの中で二つのFlameをつくり、実行させ、同時にクラス内2つのFlameを表示する方法がわかりませんでした...>< そこで私は二つのCLASSを使ってウィンドウを2つ表示させています。 Aウィンドウは、通常通り作成し、 Bウィンドウは、"スーパークラスからのコンストラクター"にチェックをいれて、新しいCLASSをつくりました。 Aウィンドウのprivate void initialize()の中に BWindow sample = new BWindow(); sample.setVisible(true); とし、2つのウィンドウを表示させています。 よろしくお願いいたします!

関連するQ&A