1

基本的なSwing アプリケーションMac OS X 10.8.2 (Java バージョン 1.6.0_37) マシンで実行しようとしていますが、 Eclipseから実行しようとするたびにフレームが表示されますが、操作できません。それと。

Eclipseで新しいSwing Application Windowプロジェクトを作成する基本的な白紙の状態から始めようとしました。これにより、次のスケルトン コードが生成されます。 (WindowBuilder->Swing Designer->Application Window)

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.BorderLayout;

public class Test {

private JFrame frame;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Test window = new Test();
                window.frame.setVisible(true);
                window.frame.pack();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Test() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton btnPress = new JButton("Press");
    frame.getContentPane().add(btnPress, BorderLayout.CENTER);
}

}

すべて問題ないように見えますが、これを Eclipse から実行すると、フレームでどのコンポーネントとも対話できません (私の非サンプル コードにはボタンとタブがあります)。

また、コンソールには次のようなものが表示されます。

2012-11-09 14:30:27.624 java[8107:707] [Java CocoaComponent compatibility mode]: Enabled

2012-11-09 14:30:27.626 java[8107:707] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000

変更しなければならない Mac 固有の設定はありますか? (最新のデフォルトの Mac JRE を使用しています)

4

6 に答える 6

1

プログラムは OSX の下の私のマシンで正常に動作しますが、不足している可能性があります

window.frame.pack();

これを試しましたか?

Test window = new Test();
window.frame.pack();
window.frame.setVisible(true);
于 2012-11-09T19:54:40.727 に答える
1

アプリケーションで DJ Swing ライブラリを使用しているときに同じ問題が発生しました (SWT を使用しています)。興味深いことに、DJ Swing を明示的に初期化していないにもかかわらず、問題が発生しました。DJ Swing の初期化を追加したため、動作するようになりました。

public class SwingAppTest {

    public static void main(String[] args) {

        NativeInterface.open();
        UIUtils.setPreferredLookAndFeel();

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                JFrame frame = new JFrame("Example");
                frame.getContentPane().setLayout(new BorderLayout());
                frame.setPreferredSize(new Dimension(400, 200));
                frame.setBounds(0,0,200,200);
                frame.setTitle("blah");
                JButton blah = new JButton("blah");
                blah.addActionListener(new ActionListener() {

                    public void actionPerformed(ActionEvent e) {
                        System.out.println("button clicked");
                    }
                });
                frame.getContentPane().add(blah, BorderLayout.CENTER);
                frame.setVisible(true);
            }
        });

        NativeInterface.runEventPump();
    }

}
于 2013-03-06T21:49:30.930 に答える
0

Apple は 10.6 以降のオペレーティング システムで
Java をサポートしていません: Apple は Mac OS X 10.7 で Java のサポートを約束していません

JRE のライブラリ ファイルが見つからないか、互換性がないようです。

于 2012-11-09T19:42:18.390 に答える
0

これを機能させるために何日も頭を壁にぶつけてきましたが、最終的に答えを見つけました:

「今は解決しました。プロジェクトの依存関係から swt.jar を削除しただけです。」

ちょっと早く!!!!

于 2013-04-16T11:22:36.983 に答える
0

それは変です。私はあなたのサンプル(Linuxなし)を試しましたが、問題はありません。ウェインが言ったように、macosの問題かもしれません。

ところで、使用しているJavaのバージョンは何ですか?

一方、問題はあなたが私たちと共有していないコードにある可能性があります => 推測するのは難しいです :)

編集:OK、あなたは私たちと一緒に「自分のコードに何があるのか​​ 推測する」ゲームをしているようです:)コードが表示されていないと問題が発生するというのが私の仮定です。

ほんの少しの詳細が現実に大きな影響を与える可能性がある、これらのポワロ/アガサ・クリスティの探偵物語のいくつかを思い出させます.

これが私の理論の理由です:

  • 示されているコードは、Java スイング ライブラリ ( import javax.swing. ...) + Awt ( import java.awt. ...) を使用しています - この組み合わせは一般的な使用例ですが、
  • あなたが共有したエラー メッセージは、SWT ライブラリ エラーを示しています ( Setting timeout for SWT to 0.100000)

だから私には、決して混ぜてはいけないものを混ぜているように思えます。. _ Swing_ AwtただしSWT、Java UI ライブラリは完全に異なります。これは、ネイティブ呼び出しと Java を組み合わせたものです (元は IBM 製)。

そのため、コードを再確認し、 を使用する場合JFrame、そこにある唯一のライブラリ コンポーネントがSwing( javax.swing....) / Awt ( java.awt. ...) のものであることを確認することをお勧めします。

于 2012-11-09T19:45:56.647 に答える