どうもこんにちは,死に物狂いの猫です.
現在Javaで英単語テストのアプリケーション開発をしてるんだけど,結果をMainフレームとは別のフレームで表示させたいんだが,Eclipse上でGUIを作り,GUIの知識に乏しい私には,この先どうやって結果のフレームを呼び出せばいいのか分からなくなってしまった.今回はこの件について備忘録を書き留める.

ちなみに別ウインドウはこんな感じのソース.至ってシンプルなEclipseが自動生成してくれるソース.
不要なコメントアウトやらは無視してください.

import javax.swing.JPanel;
import javax.swing.JFrame;
//import java.awt.Dimension;
//import java.awt.GridLayout;
import javax.swing.JTextField;

import java.awt.Rectangle;

public class ResultFrame extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTextField jTextField = null;

/**
* This is the default constructor
*/
public ResultFrame() {
super();
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(449, 338);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJTextField(), null);
}
return jContentPane;
}

/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setBounds(new Rectangle(10, 10, 400, 250));
}
return jTextField;
}

public boolean setResult(String str){
if(!str.equals(null)){
jTextField.setText(str);
return true;
}else{
return false;
}
}
} // @jve:decl-index=0:visual-constraint="10,10"

これを外部から呼び出し,なおかつsetResultを使って,結果をこのウインドウに表示させると.
さてどうしたものか,MainFrameの方からこいつのコンストラクタを呼び出してもこいつ自身は生成されないorz

そもそもSwingの知識が怪しいということでここを確認.
http://www.hellohiro.com/swingevent.htm

そこにこんなSwingソースが...
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class HelloWorldSwingEvent extends JFrame implements ActionListener {
JButton button;
JLabel label;
// コンストラクタ
public HelloWorldSwingEvent() {
// コンテントペインを取得
Container contentPane = getContentPane();
// レイアウトマネージャーを設定
contentPane.setLayout(new GridLayout(2,1));
// ラベルを生成
label = new JLabel("");
// 文字を真ん中に表示
label.setHorizontalAlignment(JLabel.CENTER);
// ラベルを追加
contentPane.add(label);
// ボタンを作成
button = new JButton("表示");
// アクションリスナーを登録
button.addActionListener(this);
// ボタンを追加
contentPane.add(button);
// ウインドウが閉じられたときにアプリケーションを終了するように設定
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// サブコンポーネントの推奨サイズおよびレイアウトに合わせて
// この Window をサイズ変更するように設定
pack();
// 表示します
setVisible(true);
}
public static void main(String[] args) {
// フレームを作成
HelloWorldSwingEvent frame = new HelloWorldSwingEvent();
}
/**
* アクションが発生すると呼び出されます。
*/
public void actionPerformed(ActionEvent ae){
// イベントが指定されたボタンで発生した場合
if (ae.getSource().equals(button)) {
label.setText("Hello World");
}
}
}


ということで私のソースに決定的に足りないものは,外部からInvokeするStaticメソッドではないか,と推察.
ということでMainにInvokeを定義したところ順調に動きました.