プロが教えるわが家の防犯対策術!

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

A 回答 (1件)

コードを見ましたが、これ、.netのFormにAWTのButtonを組み込もうとしてませんか? .netのコンポーネントとAWTなどpure Javaコンポーネントを混ぜて使うことはできないと思いますよ。

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

この回答への補足

> コードを見ましたが、これ、.netのFormにAWTのButtonを組み込も
> うとしてませんか?
> .netのコンポーネントにjava.awt.eventのイベントを組み込もう
> としたりしていませんか?

いいえ、コードの通りAWTと.NETはそれぞれ分離させてあり、混ぜてはいません。さすがに混ぜてしまうとコンパイル自体が通らないので・・・。
また、その混同をさけるためにimportで.netのFormとRichTextBoxを明示させています。

補足日時:2006/06/24 23:46
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/29 00:10

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