Windows上でJAVAのGUIを使ったプログラムを作りました。
実行するときは
java クラス名
と入力して実行しますが、
せっかく便利なプログラムをJAVAで書いても、常に黒いプロンプト画面が残るのはいやです。

コマンドプロンプト画面を出さずにJAVAのGUIつきのプログラムを実行する方法があったら教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

マニフェストファイルを作成して、JARファイル化すれば、


そのファイルをダブルクリックするだけで起動するはずです。

Main-Class の部分が起動するクラス名になります。
また、JARファイルの作成方法についてはDOCを参照してください。

例)
Manifest-Version: 1.0
Main-Class: testMain
Specification-Title: Application Test
Specification-Version: 0.1
Specification-Vendor: Tester
    • good
    • 0
この回答へのお礼

今、いろいろ試してみて、試行錯誤の末、やっとこの方法でできました。
Main-Classを指定してJARにするというのがコツなんですね。

自分のプログラムはパッケージなどでディレクトリが分かれてるので、そのディレクトリの指定を壊さないようにJARを作るのが難しかったですが、なんとかできました。

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

お礼日時:2001/03/16 16:42

私もおんなじ事を思った時期があって


そのときいいツールを見付けたので御紹介します

それはフリーソフトのjcraftというソフトです。
vectorなんかでjava関連のところにあったと思います
これならjava本体がどこにあってもOkという凄いものです。
ちょっとヘルプが無く分かりにくいのが難点ですが...

参考になれば幸いです。
    • good
    • 0
この回答へのお礼

便利なツールがあるんですね。
情報ありがとうございました。

お礼日時:2001/03/16 16:40

補足読みました。



Cからのキックの仕方は、main()を使うと
必ずコンソールプログラムになってしまう
ため、DOSプロンプトが表示されます。

WindowsのGUIアプリケーションからキック
した方がいいでしょう。これでウィンドウを
非表示で起動して、WM_CREATEでSysExecuteで
Javaプログラムを起動して、その直後に
PostQuitMessage(0)を呼び出せばいいはず。

ではでは☆
    • good
    • 0
この回答へのお礼

CからやるにはGUIを使わないといけないんですね。
そこまでは、、、詳しくないものでできそうにありません。

main()を使うと必ずコンソールになるというのも、初めて気づきました。どおりで、今までかならず黒い画面がでてたわけですね。

お礼日時:2001/03/16 16:37

java クラス名


だとコンソール有りでjavaが実行されます。
ですので、
javawコマンドを使用してみてください。
これだとコンソール無しで実行します。
しかし、この場合、javaがハングった場合、
強制終了の必要があるので注意してください。
あとは、cからのキック
(この場合起動時の一瞬プロンプトが見えます)
で良いでしょうし、
バッチファイルに
javaw クラス名と書いて保存し、
プロパティのプログラムの所で、
終了時にウィンドウを閉じるにチェックし、
実行時の大きさを最小化にすると
雰囲気プロンプトが見えなくなります。
    • good
    • 0
この回答へのお礼

javawというコマンドは初めて使ってみました。
簡単にウインドウがでないようにできるので便利ですね。

ありがとうございます。

お礼日時:2001/03/16 16:35

バッチファイルか何かを書いて、そのバッチ


ファイルのプロパティで、プロンプトを表示
しないという設定はありませんでしたっけ?
#後は、Cでウィンドウなしのプログラムを
#書いて、Javaプログラムを呼び出したら、
#そのまま終了というものをかいてもいいかも
#しれませんね。

ではでは☆
    • good
    • 0
この回答へのお礼

ありがとうございます。
じつは、、、
>プロンプトを表示
>しないという設定はありませんでしたっけ?

それがわからず困っています。Windowsのヘルプを見てもみつからず、、、。
また、Cで単純に
#include <stdlib.h>
void main(void){
system("java ***");
}
としても、ウインドウがでます。うーん、こまりました。もしご存知でしたらよろしくおねがいします。

お礼日時:2001/02/22 19:01

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjavaプログラムを動かす時のコマンドプロンプトについて。

プログラムに関しては、htmlを少しかじった程度の素人です。暇な時間を利用して、プログラムを学んでみようと思っています。
java開発ツールの
Java(TM) 2 SDK, Standard Edition 1.4.2_04
をインストールしてプログラムを動かしてみようとしたのですが、コマンドプロンプトでパスを入力すると
「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示されてしまい動きません。
環境引数、環境変数
PATH
CLASSPATH
等の設定が必要だという事まではわかったのですが、具体的にどこをどういじれば良いのかが分かりません。
また、コマンドプロンプトではデフォルトでC:\Windowsと出るようなのですが、私のものは
C:\Documents and Settings\ユーザー名>と表示されます。
どなたか詳しい方がいらっしゃいましたら、解決法をご指導下さい。
ちなみにOSはWinXPを使用しております。
宜しくお願いします。

Aベストアンサー

とりあえず、パスやクラスパスの設定に関してはSunのWebサイト内のインストールガイドに書いてあるので、ちゃんと読んでください。(自動的に設定されることなんてありませんよ!)
http://java.sun.com/j2se/1.4.2/ja/install-windows.html

ただ、質問者さんの場合はJava以前にコマンドプロンプトの使い方の基礎から勉強しないといけなさそうです……。
http://www.google.co.jp/search?q=コマンドプロンプト+使い方&oe=UTF-8&hl=ja

とりあえず、基礎の基礎のレベルから手取り足取り教えられるほど暇な回答者はいませんので、いろいろ情報を検索して探してみてください。
Javaの基礎について解説しているWebサイトはいくつもありますし、また基礎的なことはこのサイトでも過去に何度も質問が出ています。

Qdirコマンドを実行して、結果を表示するJavaプログラム(プログラム

dirコマンドを実行して、結果を表示するJavaプログラム(プログラムは一番下に)なのですが
このプログラムをfor文でfor(int i=0;i<=13;i++)とこのように
やったら、以下のような結果になったのですが

//実行結果
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は xxxx-xxxx です

C:\Users\z\zw\zww(1) のディレクトリ

2010/10/19 11:11 <DIR> .
2010/10/19 11:11 <DIR> ..
2010/10/19 11:11 301 .classpath
2010/10/19 11:11 381 .project
2010/10/19 11:11 <DIR> .settings
2010/10/19 11:16 <DIR> bin
2010/10/19 11:16 <DIR> src
2 個のファイル 682 バイト
5 個のディレクトリ 48,884,387,840 バイトの空き領域
//実行結果ここまで

これをwhileで
while(true){
if(a.getLine()==null){
break;
}
System.out.println(a.getLine());
}
というようにやると以下のような実行結果になって、for文と同じ結果になるのが正
しい結果だと思うのですがなりませんでした。ループを抜けるために、break文をや
ったのですが、自分が考えた条件は、getLine()メソッドは読み込む行が無くなった
ら、nullを返すので、a.getLineがnullと同じになったらbreakをするという風に自
分ではしたつもりなのですが、条件が違うのかfor文のような結果が出ませんでした。

whileの場合なぜこのような結果になってしまったのかわからなく、
手詰まりになってしまったので、どなたかご教授ください

実行結果
ボリューム シリアル番号は xxxx-xxxx です
C:\Users\z\zw\zww(1) のディレクトリ
2010/10/19 11:11 <DIR> .
2010/10/19 11:11 301 .classpath
2010/10/19 11:11 <DIR> .settings
2010/10/19 11:16 <DIR> src
5 個のディレクトリ 48,886,591,488 バイトの空き領域
実行結果ここまで

//プログラム
import java.io.*;
class DirCmd{
BufferedReader br;
DirCmd(){//コンストラクタの定義(dirコマンドをここで実行)
try{
Process p = Runtime.getRuntime().exec("cmd /c dir");
InputStream is = p.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
}catch(IOException e){}
}
public String getLine(){//dirコマンドの実行結果の一行を読む
String line = null;//読み込む行が無くなったらnullを返す
try{
line = br.readLine();
}catch(IOException e){}
return(line);
}
public static void main(String [] args){
DirCmd a = new DirCmd();

while(true){
if(a.getLine()== null){
break;
}
System.out.println(a.getLine());
    }
}
}

dirコマンドを実行して、結果を表示するJavaプログラム(プログラムは一番下に)なのですが
このプログラムをfor文でfor(int i=0;i<=13;i++)とこのように
やったら、以下のような結果になったのですが

//実行結果
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は xxxx-xxxx です

C:\Users\z\zw\zww(1) のディレクトリ

2010/10/19 11:11 <DIR> .
2010/10/19 11:11 <DIR> ..
2010/10/19 11:11 301 .classpath
2010/10/19 11:11 ...続きを読む

Aベストアンサー

while文の実行結果がfor文の実行結果と比べて
必ず偶数行のみ出力されていませんか?
ここにgetLine()の使い方に誤りがあると思います。

getLine()は実行毎に結果を返しますよね?
「 if(a.getLine()== null){ 」の時点でaの中身を1行取得し
結果がnullか判断されています。
nullでなければ「 System.out.println(a.getLine()); 」が実行されますが
このときにはすでに2行目を出力していることになるのです。

ポイントはwhile文内で2回getLineを使わないことです。

と、ここまで偉そうなことを言っておいて解決策は
以下のようなものしか思い浮かびません・・・
以下を参考により良くして頂けると幸いです。
-------------------------------------------------
public static void main(String [] args){
DirCmd a = new DirCmd();

while(true){
//getLineの結果を保持する変数
String temp = a.getLine();

if(null == temp){
break;
}

//nullでなければ保持している内容を出力
System.out.println(temp);
}
}

while文の実行結果がfor文の実行結果と比べて
必ず偶数行のみ出力されていませんか?
ここにgetLine()の使い方に誤りがあると思います。

getLine()は実行毎に結果を返しますよね?
「 if(a.getLine()== null){ 」の時点でaの中身を1行取得し
結果がnullか判断されています。
nullでなければ「 System.out.println(a.getLine()); 」が実行されますが
このときにはすでに2行目を出力していることになるのです。

ポイントはwhile文内で2回getLineを使わないことです。

と、ここまで偉そうなことを言ってお...続きを読む

QjavaでのGUIプログラムについて

javaでのGUIプログラムについて

質問失礼します。
現在,GUIを用いたプログラムが作りたくて取り組んでいます。
具体的な質問なのですが,GUIを定義したクラスでテキストに入力された情報をgetText()で取得,その情報を他のクラスで使用したいと考えているのですが, その方法がわからず困っています。

例えば
//GUIクラス内
class MyActionAdapter implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
 // TODO 自動生成されたメソッド・スタブ
  n = Integer.parseInt(t1.getText());
}
}

//testクラス
public class test(){
for(int a=0;a<n;a++){
System.out.println("test");
}
}

ここでGUIクラスで取得した変数nをfor文内の繰り返し条件nで使用したいのです。

よろしくお願いします。

javaでのGUIプログラムについて

質問失礼します。
現在,GUIを用いたプログラムが作りたくて取り組んでいます。
具体的な質問なのですが,GUIを定義したクラスでテキストに入力された情報をgetText()で取得,その情報を他のクラスで使用したいと考えているのですが, その方法がわからず困っています。

例えば
//GUIクラス内
class MyActionAdapter implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
 // TODO 自動生成されたメソッド・スタブ
  n = Integer.parseInt(t1.getT...続きを読む

Aベストアンサー

テキストが入力されたら、そのイベントを取得したいクラス側(この場合testクラス側)でイベントを受け取るようにするとできます。

public class Gui extends JFrame{
JTextField field;
public Gui(){
field=new JTextField();
field.setActionCommand("text command");
getContentPane().add(field);
}
public void addListener(ActionListener l){
field.addActionListener(l);
}
}

public class Test implements ActionListener{
public static void main(String[] args){
new Test();
}

private intn=0;

public Test(){
Gui m=new Gui();
m.addListener(this);

m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
m.pack();
m.setVisible(true);
}

public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("text command")){
n=Integer.parseInt(((JTextField)e.getSource()).getText());
}
print();
}

void print(){
for(int a=0;a<n;a++){
System.out.println("test");
}
}
}

テキストが入力されたら、そのイベントを取得したいクラス側(この場合testクラス側)でイベントを受け取るようにするとできます。

public class Gui extends JFrame{
JTextField field;
public Gui(){
field=new JTextField();
field.setActionCommand("text command");
getContentPane().add(field);
}
public void addListener(ActionListener l){
field.addActionListener(l);
}
}

public class Test implements ActionListener{
public static void main(String[] args){
new Test();
}

private intn=0;

pu...続きを読む

QGUIプログラム?実行環境?開発環境?

JavaScriptを勉強し始めているパソコン初心者です。

GUIプログラム?

実行環境?

開発環境?

この三つをネットで調べるですが、いまいち意味がわかりません。

どなたか、この初心者に解りやすくかみくだいて教えていただけないでしょうか?

お願いいたします。

Aベストアンサー

私もあまり詳しくはないので正しいかは分かりませんが、分かる部分と文面からの推測をすればこうではないかと思われます。

・GUIプログラム
GUI(Graphic User Interface)
つまり画面に何かしらを描画するタイプのプログラムではないかと。
GUIの反対語はCUI、CはCommandです。
テキストベース、つまり文字しか使えないタイプということです。
コマンドプロンプトみたいなプログラムがCUIとなっています。

・実行環境
例えばホームページを作ってもホームページの閲覧環境(IE等のブラウザー)が無ければ見ることができません。
それと同じようにその作ったプログラムが動くソフトやOS等の環境一式のことです。

・開発環境
プログラムを書く為のソフトやOS等の環境一式のことです。
人によっては標準のメモ帳のみ、といった強者も希にいますが大体は使いやすいソフトを揃えています。

間違っているかもしれないのでご勘弁をー

Qjava アプリケーション実行時のDOSプロンプトの消し方について

作成したjava アプリケーションを、DOSプロンプトや
バッチファイルから実行すると、DOSプロンプトのウインドウが残ってしまいます。アプリケーション(プログラム)の起動と同時に消去まはた非表示にしたいのですがどうしたらよいでしょうか。よろしくお願いします。

Aベストアンサー

#1です。あれだけじゃ何なので、もうちょい詳しく。

j2sdkのbin以下にあるjavaw.exeのショートカットファイル作成してプロパティを開く。作業フォルダにclassファイルのあるディレクトリを指定し、リンク先にクラス名を追加。
例えばこんな感じです。
C:\j2sdk1.4.2_04\bin\javaw.exe Class1


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報