• 締切済み

J#でjava.awt.frameからSystem.Windows.Forms.Formを呼び出す

Windows XP SP2にVisual J# 2005 Express Editionをインストールして使用しています。 今まで、J2SE 5.0を使用していて、GUIの部分はSwingで書いていたのですが、J#に移行したいと思っています。 J#はSwingを一部サポートしているのですが、JTextPaneが使えないので、その部分だけ、J#のSystem.Windows.Forms.FormとSystem.Windows.Forms.RichTextBoxを使って作り替えようと思っています。そこで、java.awt.Frameにjava.awt.Buttonを配置してそのボタンが押されたときにFormを表示させたいのですが、Form.Show()すると表示されたFormがきちんと表示されず、フリーズしてしまいます。 以下に、ソースコードを載せますので、問題点を指摘していただけたら幸いです。 import System.Windows.Forms.Form; import System.Windows.Forms.RichTextBox; import System.Drawing.*; import System.ComponentModel.*; import java.awt.*; import java.awt.event.*; class test implements ActionListener{  Frame frame;  Form f;  RichTextBox tb;  Button b;  IContainer components;  void testGUI(){   this.b=new Button("test");   this.b.addActionListener(this);   this.tb=new RichTextBox();   this.f=new Form();   this.f.get_Controls().Add(this.tb);   this.f.set_Name("Form1");   this.f.set_Text("Form1");   this.frame=new Frame();   this.frame.setSize(100,100);   this.frame.add(this.b);   this.frame.show();  }  public static void main(String[] args){   test2 t2=new test2();   t2.testGUI();  }  private void f_Load(Object sender, System.EventArgs e){}  public void actionPerformed(ActionEvent ae){   if(ae.getSource()==this.b){    this.f.Show();   }  } }

みんなの回答

noname#49664
noname#49664
回答No.1

コードを見ましたが、これ、.netのFormにAWTのButtonを組み込もうとしてませんか? .netのコンポーネントとAWTなどpure Javaコンポーネントを混ぜて使うことはできないと思いますよ。また.netのコンポーネントにjava.awt.eventのイベントを組み込もうとしたりしていませんか? これも無理でしょう。  .netとpure JavaのGUIライブラリは全く別物ですから両者を混ぜて使うことはできません。まずは.netかAWTかどちらか一方だけを使うように書き直してみてください。

yamamo2
質問者

お礼

今回の質問をMSDN Forum Visual J# GeneralにポストしたところVisual Studioの開発チームの方から返事があり、J#のバグであることが判明しました。

yamamo2
質問者

補足

> コードを見ましたが、これ、.netのFormにAWTのButtonを組み込も > うとしてませんか? > .netのコンポーネントにjava.awt.eventのイベントを組み込もう > としたりしていませんか? いいえ、コードの通りAWTと.NETはそれぞれ分離させてあり、混ぜてはいません。さすがに混ぜてしまうとコンパイル自体が通らないので・・・。 また、その混同をさけるためにimportで.netのFormとRichTextBoxを明示させています。

関連するQ&A