【初心者】Java質問・相談スレッド54【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath
前スレッド
【初心者】Java質問・相談スレッド53【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1094860940/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
0002古代帝國富士皇朝総帥・伯壬旭
NGNGほめてつかわす。
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG超合金乙
0006全スレ約1000
NGNG0007デフォルトの名無しさん
NGNGttp://java.sun.com/j2se/1.5.0/download.jsp
0008デフォルトの名無しさん
NGNGpublic String printf(String format, String... args)
なんかいやん。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGJpanelの上にpaintcomponentメソッドで図を描いていて,それをjpgで出力する
メソッドを書いたのですが,実際実行すると非常に画質が悪いものが出力されてしまいます。
例えばある直線を書いてjpgで出力すると直線の周りに微小な斑点がついてたりとかで
とにかく画質が悪いのです。
コードの概略は以下の通りです。
String curDir = "../image";
JFileChooser fileChooser = new JFileChooser(curDir);
fileChooser.setFileFilter(new ImageFileFilter());
int ret = fileChooser.showDialog(content, "選択");
if (ret != JFileChooser.APPROVE_OPTION)
return;
File file = fileChooser.getSelectedFile();
String fileName = file.getAbsolutePath();
File outFile = new File(fileName + ".jpg");
try {
canvas_image.getGraphics().drawImage(cakeImg, 0, 0, this);
ImageIO.write(canvas_image, "jpg", outFile);
} catch (IOException e) {
}
基本的に画質を上げるには,どういう風に修正すれば良いのでしょうか?それとも
根本的なところが間違っているのでしょうか?
0011デフォルトの名無しさん
NGNG>例えばある直線を書いてjpgで出力すると直線の周りに微小な斑点がついてたりとかで
>とにかく画質が悪いのです。
普通 jpeg とはそういうものです。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGアニメ的な色の境目がはっきりしている絵は、pngやgifを使って
写真のような色の境目が滑らかな絵は、jpegを使うとよいですよ
001410
NGNGただ,上のコードの
File outFile = new File(fileName + ".jpg");
ImageIO.write(canvas_image, "jpg", outFile);
のjpgをpngにすると綺麗な画像が出力されたのですが、このjpgの部分を
bmpやgifなどの画像用の拡張子へ変えるだけでそれに対応する画像ファイル
が出力されるというのがちょっとしっくりこないのですが,そういうもの
なのですかね?
0015デフォルトの名無しさん
NGNG対応形式はプラグインで増えるので
保存形式を文字列で指定するのは妥当かと。
あとImageWriterを取得して使えば
圧縮率とか細かく指定して保存できるはず。
0016デフォルトの名無しさん
NGNGLuaみたいなのでお願いします。
0017デフォルトの名無しさん
NGNGpublic class Test {
public static void main(String[] args) {
・・・
}
public static void aaa() {
・・・
}
}
そしたら、warningで
「スタティックメソッドしかもたないユーティリティクラスは、インスタンス化されないために
publicなデフォルトコンストラクタを持ってはいけないし、クラスはfinalにすべきだ」
って言われたんですけど、そういうもの?
継承したりしちゃいけないの?
0018デフォルトの名無しさん
NGNGrhino = Java版JavaScript
jython = Java版Python
jruby = Java版Ruby
pnuts = Javaをスクリプト化したもの
groovy = Javaをスクリプト化したもの
0019デフォルトの名無しさん
NGNG継承したいならabstract指定すれば?
0020デフォルトの名無しさん
NGNG「スタティックメソッドしか持たない」ユーティリティクラスを
継承したいという場面が思いつかないんだが、どんな場合?
0022デフォルトの名無しさん
NGNGで継承してるんだったらやめたほうがいいよ。
0023デフォルトの名無しさん
NGNGBeanShell を忘れとるがな。他にもいっぱいありそうな予感。
0024デフォルトの名無しさん
NGNGどうもです。
0025デフォルトの名無しさん
NGNGそれならmainの先頭に、そのユーティリティクラスのスタティック
イニシャライザ部分をメソッドにしたやつを呼び出せばいい訳で。
exteds UtilityClass
public static void main(..) { UtilityClass.initializer();
両方とも同じ一文を追加する事は変わらないから。。。
0026デフォルトの名無しさん
NGNGイニシャライザ部分をメソッドにしたやつを呼び出せばいい訳で。
exteds UtilityClass
public static void main(..) { UtilityClass.initializer();
両方とも一行だけを追加する事には変わらないから。。。
0027デフォルトの名無しさん
NGNG情報って、どっかにありますか?
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGJPL
Java版Perlを忘れてる
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG不要。
JDKインストール時にJREもインストールされる。
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGS∪∩に抗議しる!
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG003817
NGNGありがと。
で、
>>22
>便利だからという理由(>>21の例では便利かどうかもあやしいが)
>で継承してるんだったらやめたほうがいいよ。
この「便利かもしんないけど、やめたほうがよい」理由を知りたいというのが、
今回の質問の根本なんです。
できれば、教えてください。
0039デフォルトの名無しさん
NGNGクラス設計の根底に関わる問題だからです。
継承を用いる正しい基準に沿わないからと言えるでしょう。
継承は、インスタンスの機能を増やす為にこそ用いられるべきですので
インスタンスの操作が出来ないstaticメソッドonlyクラスでは
その意味が全く無くなるからです。
他にも、集約による多態性を実現する為にだけ継承を用いるのは良くない
など幾つかの制約基準があります。
まだ大きなプログラムを組んでないと、そこら辺の基準のありがたみが
なかなか分からないものですが、しばらくして大きなのを組むように
なり、いろいろクラス設計をしだせば、以前は便利だからとやってた事でも
なんか変な設計で気持ち悪いなって感じでやらなくなるものなのです。
0040デフォルトの名無しさん
NGNG「スタティックメソッドしかもたないユーティリティクラスは、インスタンス化されないために
publicなデフォルトコンストラクタを持ってはいけないし、クラスはfinalにすべきだ」
に関してはそうだと思う。
クラスというより、ライブラリの性質をもったモノを作ろうとしてるわけだから
インスタンス化して使うモノとは区別しておいたほうがプログラム構造上わかりやすいということ。
これは、継承クラスの使い方を気をつければ問題ないんだが、継承したクラスのインスタンス化を
禁止する書式がないため、 1.4まででは もし、機能拡張をするのであれば継承せず、
内部で参照(USE)するなりして実現するということで表現することになる。
昨日リリースされた、J2SE5.0ではこの問題を解決する StaticImportという機能が用意されている。
ttp://www5.airnet.ne.jp/sakuraba/java/laboratory/J2SE1.5/LangSpec/StaticImport/StaticImport.html
スタティックメソッド(定数もOK)をインポートする機能です。
チェックしてみては?
004140
NGNGそうそう、そういいたかった。
>>39の言い方だと、 インスタンスに対する操作を拡張したくってするのが継承、
ライブラリの機能を拡張したくってつかうのが StaticImport。で、よろしい?
0042デフォルトの名無しさん
NGNGできることとか文法とか、だいたいいっしょみたいなかんじが
するんですが
0043sage
NGNGWindows2000、IE5 SP3の環境で、
response.setContentType("application/x-csv");
response.setHeader("Content-Disposition", "attachment; fileName=\"" + fileName + "\"");
以上のように設定すると、ダウンロードダイアログで「ファイルを開く」を選択
すると、もう一度、ダウンロードダイアログが表示されます。
(さらに選択すると、正常にファイルが開かれる)
ContentTypeにダミーの文字を入れ、Content-Dispositionをinlineにすれば、こ
の問題は解消されましたが、
WindowsXP SP2の環境で、ダウンロードダイアログが表示されないという現象が
発生しました。
両環境で、一度だけ、ダウンロードダイアログを出したいのですが、良い解決策
があれば教えてください。
0044デフォルトの名無しさん
NGNGええと、マジで良く分からんのだけど、static初期化ブロックのことをいってるんだろうけど、
これってクラスロード時に自動的に呼び出されるんだよねえ? しかもstaticメンバにしか
アクセスできない。
ということは、スーパークラスのstatic初期化ブロックが初期化できるのは、スーパークラス
のstatic変数のみってことだよな。
一方、staticメンバにアクセスする時って、継承していようがなんだろうが、「クラス.staticメンバ」
という形になるよな(staticインポートを使ってないとする)。この段階でクラスがロードされるので、
static初期化ブロックが実行されるよな。
で、継承するとこれより便利になるってのが良く分からないんだけど。おれがバカなのかな。
まじ分からない。
0045デフォルトの名無しさん
NGNGcontent-typeが間違ってる。
text/comma-separated-values
あと、サーブレットコンテナの設定でmimeにあるかどうかも確認。
0046デフォルトの名無しさん
NGNGあー、でも>>46のにしちゃうとDLダイアログが出ずにそのまま表示されるかも。
確実にDLダイアログだしたい場合は、
application/octet-stream
0047デフォルトの名無しさん
NGNGHotmailのメール内URLをクリックすると、そのページに
ちゃんと飛ぶ場合とそのまま開かない場合があります。
開かない場合のURL上にマウスを持っていくと、左下に
「javascript:OpenWin('http:・・・・・・・・」と表示されます。
たぶんこれが原因だと思うのですが、どう操作すれば元通りに
なるのでしょうか?ちなみにyahooのメール内URLはちゃんと
開きます。よろしくお願いします。
0048デフォルトの名無しさん
NGNGJavaというキーワードだけで来ちゃったね。
左下にそうでるのは問題ないと思うけど・・・?
ポップアップブロッカーとかが悪さしてない?
004947
NGNGたぶんポップアップブロッカーが悪さしてるとは
思えないのですが、つい一昨日ぐらいまでは
普通にメール内URLをクリックすると、そのページに
ちゃんと飛んだのですが・・・ メールの送り主に
関係なく、メール内URL左下の表示が
「javascript:OpenWin('http://・・・・・・・・」
ならば開かなく、(URLコピペでは開くのですが)
「http://・・・・・・・・」
ならばちゃんと開く始末です。たまに左下表示が
前者のように表示される時があるので、
そのページにストレートに飛べなくて困ってます。
たぶんどれも後者になるようにすれば
問題ないのですが・・・ もう一度アドバイスお願いします。。
0050デフォルトの名無しさん
NGNGスレ違い
>>1をよんでみそ
0051デフォルトの名無しさん
NGNGどうすれば実現できるのでしょうか?
public void doSomthing() {
System.out.println(何らかの処理); // doSomthingという出力を得たい
}
例えば、Log4jなんかはlogメソッドを呼び出したクラスやメソッド名も
記録できますよね。その仕組みがどうなっているのか知りたいです。
Log4jのソースを見てみたのですが、該当箇所を見つけられませんでした。
0052デフォルトの名無しさん
NGNGStackTraceElement[] ste=new Throwable().getStackTrace();
ste[0].getMethodName();
0053デフォルトの名無しさん
NGNGnew Throwable().getStackTrace()[0].getMehtodName();
で現在実行ポイントのメソッド名のStringが得られる
0054デフォルトの名無しさん
NGNGnew Exception() して、getStackTrace() すれば StackTraceElement[] が取れる。
StackTraceElementからクラス名やメソッド名が取れる。
・・・やりたいこと違います?
005551
NGNGありがとうございます。
なるほど、そんな風にしてメソッド名を取得するんですね。
目から鱗です。
でも何となく new Throwable() は、例外をスローするみたいで使うのに
抵抗がありますね。別にスローするわけではないので問題はないと思いますが。
早速使ってみます。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNGありがとうございます。
なるほど、そんな風にしてメソッド名を取得するんですね。
目から鱗です。
でも何となく new Throwable() は、例外をスローするみたいで使うのに
抵抗がありますね。別にスローするわけではないので問題はないと思いますが。
早速使ってみます。
0059デフォルトの名無しさん
NGNGこれはパネルとかのLayoutが悪いんですか?
自由に大きさや配置に便利な命令はありますか?
0060デフォルトの名無しさん
NGNG自分で画像を Image に読み込んでから
java.awt.Image#getScaledInstance(int,int,int) とか使って思った大きさにしてから、
その後 javax.swing.ImageIcon#ImageIcon(Image) で ImageIcon 生成すれば?
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Image.html#getScaledInstance(int,%20int,%20int)
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/ImageIcon.html#ImageIcon(java.awt.Image)
0061デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGIEコンポーネント使ったアプリ作ろうかと
思ってるんですが、SWT 使ってIEコンポーネント
使うってできるんですか。
できなきゃ、おとなしくC#で作ろうかと思うんですが、
できれば java の勉強したいなぁ・・と。
0064デフォルトの名無しさん
NGNGSWT使わなくてもできなくはない。
しかしjavaの勉強するのにSWTやるのは無謀というか何というか。
0065デフォルトの名無しさん
NGNGhttp://headlines.yahoo.co.jp/hl?a=20041002-00000093-myc-sci
0066デフォルトの名無しさん
NGNGGeckoのラッパもあるでよ
ttp://jrex.mozdev.org/
ttps://jdic.dev.java.net/
006738
NGNG丁寧な説明ありがとう。
「あ、そういうことか!」ってほど理解というか、しっくりきていないところが悔しいですが。
>>44
なんか、ちょっと観点が違うような・・・
とにかく、もうちょっと精進して出直してきます。
レスくれたみなさんありがとうございました。
0068デフォルトの名無しさん
NGNGGCJだとSWTと使わざるをえないわけだが・・・orz
0069デフォルトの名無しさん
NGNG007063
NGNG>>64
SWT 使えば簡単ですか。よかった。
java の勉強したいですが、C++ なら使えますし、
java でも簡単なプログラムなら作れますので、
一から始めるわけじゃないので、SWT で作ってみたいなぁと。
(だって、Swing で作ると見た目がカコワルイ)
>>66
Gecko のラッパですか。そりゃいいや。
「C#で作ろう」→「いやどうせならJavaでプラットフォーム非依存で」
→「いやIEコンポーネント自体がプラットフォーム依存だ・・・orz」
って感じだったんで、うれしい情報でした。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG補足。SWTではBrowserというクラスがあり、これがブラウザの実装を隠蔽している。
実際に使われるブラウザは、WindowsならIEコンポーネント、LinuxならMozilla。
コード上は実装を意識せず書けた気がする。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNGpublic abstract class A
public class B
クラスAのことを「抽象クラス(abstract class)」というけど、
クラスBには何か名称が付いているんですか?
0075デフォルトの名無しさん
NGNGBをクラスといいます。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?sourceid=navclient-menuext&ie=UTF-8&q=%E5%85%B7%E8%B1%A1%E3%82%AF%E3%83%A9%E3%82%B9
0079デフォルトの名無しさん
NGNGどのような方法(又はクラス)があるのでしょうか?
わかる方がおりましたら、なにとぞご教授お願いいたします。
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNGどうしたらいいんですか? お願いします。
0083デフォルトの名無しさん
NGNG右クリックでのクリック判定の部分を左クリックの判定に変える。
0084デフォルトの名無しさん
NGNGABCD abcd = new abcd[10];
という配列の宣言と、
ABCD abcd = new abcd(2);
このようなコンストラクタを用いるのをあわせて、
ABCD abcd = new abcd[10](2);
のようにはできないものでしょうか?
クラスABCDは以下のとおりです。
class ABCD
{
double[] Weight;
AAAA(int I)
{
Weight = new double[I];
}
}
0085デフォルトの名無しさん
NGNG残念ながらできません。
そういう使い方が、多いのだったら、そういう初期化するstaticメソッドを用意していてもいいのでは?
class ABCD
{
double[] Weight;
AAAA(int I)
{
Weight = new double[I];
}
public static ABCD[] getInstances(int num,doublw w){
ABCD[] abcd = new ABCD[num];
for( int i=0;i<num;i++ )
{
abcd[i] = new ABCD[w];
}
return abcd;
}
}
で、ABCD abcd = new abcd[10](2); の代わりに、 ABCD[] abcd = ABCD.getInstances(10,2); とする。
0086デフォルトの名無しさん
NGNG「コンクリートクラス」というのはどうだろう。
なんか硬そうだ。メタルスライムくらいは倒せそうだ。
0087デフォルトの名無しさん
NGNGなんでいきなり 5.0 なんでしょう?
Sun の政治的な何か?
0088デフォルトの名無しさん
NGNGjava.awt.Window#toFront() とか。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Window.html#toFront()
0089デフォルトの名無しさん
NGNGなんか 1.4 -> 1.5 だとマイナーバージョンアップっぽく見えるので
ずっと変化しそうに無い "1." を削って(?) 5.0 にしたらしい。
0090デフォルトの名無しさん
NGNGあーやっぱりそんな理由なのか。どもです。
0091デフォルトの名無しさん
NGNG釣られてみる。コンクリートクラスでメタルスライム倒した友達いるよ。
誰か「またオレ用語か」って言ってくれるの待ってるらしい。
ドキドキ。オレも待ってみる。
009284
NGNG早速のお答えありがとうございます。
自分の書き込み見直したら変なところいっぱいあるのに、
ご親切に助言も下さりありがとうございました。
009344
NGNG1.2->名前:Java2 バージョン:1.2
1.5->名前:Java5 ついでにバージョンも5.0
0094デフォルトの名無しさん
NGNGちょっと大きすぎるね^^;
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG世にある専門用語は全てもともと俺用語だよ。
使っている内に認められるものさ。
0097デフォルトの名無しさん
NGNG>>86 すげえな。業界で使われてる言葉と同じだよ。センスあるねー
と漏れも釣られておく。
0098デフォルトの名無しさん
NGNGAudioClip使ってるの?
JavaSound使えるなら
Clip作ってaddLineListenerで終了のイベント拾えるよ。
Java1.1ならcom.sunパッケージでなんかあった気がする。
0099デフォルトの名無しさん
NGNG> しかしjavaの勉強するのにSWTやるのは無謀というか何というか。
すみません、ここのところをもう少し詳しく教えていただけないでしょうか。
0100デフォルトの名無しさん
NGNGやる気があれば大丈夫。逐一ここで聞きに来るような軟弱者でなければ。
0101デフォルトの名無しさん
NGNG> 1.5->名前:Java5 ついでにバージョンも5.0
JavaTM 2 Platform Standard Edition 5.0 Development Kit (JDK 5.0).
らしいので Java5 ではなく、Java2 のままですね。
■ このスレッドは過去ログ倉庫に格納されています