プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。tokushellと申します。

Javaを始めたばかりですが、学校の課題でAWTを用いて、アプリケーションをつくってます。

実行し、同時に2つのウインドウ(A・B)を表示している状態で、
Aウインドウ内のButton押すとBウインドウのLabelのTextが変更される。

ということがしたいです。

どうすれば別ウィンドウの設定を変えることができるのでしょうか?

よろしくお願い致します。

A 回答 (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);
}

}
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

教えていただいたソースをひとつひとつ確かめ理解することができました。

応用し、AWTでのやりかたもわかりそうです。

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

お礼日時:2010/02/19 17:25

こんにちは。



どのように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つのウィンドウを立ち上げようとしているのか補足していただければもっと詳しく回答できると思います。

この回答への補足

回答ありがとうございます!

私はEclipseにVisualEditorをプラグインさせて使っています。

私は同じCLASSの中で二つのFlameをつくり、実行させ、同時にクラス内2つのFlameを表示する方法がわかりませんでした...><

そこで私は二つのCLASSを使ってウィンドウを2つ表示させています。
Aウィンドウは、通常通り作成し、
Bウィンドウは、"スーパークラスからのコンストラクター"にチェックをいれて、新しいCLASSをつくりました。

Aウィンドウのprivate void initialize()の中に
BWindow sample = new BWindow();
sample.setVisible(true);
とし、2つのウィンドウを表示させています。

よろしくお願いいたします!

補足日時:2010/02/19 15:49
    • good
    • 0
この回答へのお礼

解決することができました。

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

お礼日時:2010/02/19 19:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!