>>315-318 もう二人の方に教えてもらったからいいですよ。
理解できました。物事のポイントを押さえる事の何が悪いんですかねぇ?
しかし嫉妬は怖いですね。
最後にもう一度聞きましょう。私は筑波の理系です。
あ な た は ど こ の 大 学 で す か ?
321 :
デフォルトの名無しさん :04/08/29 22:43
高卒の奴はこの板から出てけよ。(禿藁嘲笑)
>>320 俺は中卒だが、少なくともお前よりは人に質問するときの心得はある。
大丈夫か? 筑波大の理系は。
324 :
デフォルトの名無しさん :04/08/29 22:47
ファイルダイアログからTransferHandlerでドラッグ&ドロップした ファイルを、JListのある特定のセルに落としたいのですが ドラッグ中のマウスカーソルがファイルダイアログの外に出た後の マウスカーソルの位置の取得方法が分かりません。 どうすれば位置が取得できるのでしょうか?
>>323 中卒の嫉妬って怖いですね。
あなたは、この板に居ていいと思ってるんですか?
筑波の恥さらしめ。消えろ。
>>325 この板? どういう意味?
今はフリーSE で色々な企業まわって業務 SE や PG に業務モデリングや Java の
教育してる身だから Java 初心者が何を知りたいか、この板は勉強になるんでね。
まー、筑波大のあんたは業務系なんか関係ないか知らんけどね。
自分で動かないで他人に頼りっぱなしを「何が悪い」と開き直り、 学歴を振りかざして優越感丸出し。 本当、あんた筑波の恥さらしだよ。頼むから二度と来るなよな。
330 :
デフォルトの名無しさん :04/08/29 23:29
>>320 筑波のパチンコ屋「大学」ですか?それとも筑波大の敷地に入りましたか?
筑波大気分味わえて、よ か っ た な 。 小 卒 ! !
ただの学歴煽りだろ。放置しとけ。
333 :
デフォルトの名無しさん :04/08/29 23:51
いや〜俺マサチューセッツ工科大卒なんだ・・・ *言うだけなら誰でも*
筑波大ってそんなに良い大学なの?? あまりいろんな大学のことは良く知らないんだけど…
彡川川川三三三ミ〜 プウゥ〜ン 川|川/ \|〜 ポワ〜ン ________ ‖|‖ ◎---◎|〜 / 川川‖ 3 ヽ〜 < 筑波大だけど文句ある? 川川 ∴)д(∴)〜 \________ 川川 〜 /〜 カタカタカタ 川川‖ 〜 /‖ _____ 川川川川___/‖ | | ̄ ̄\ \ / \__| | | ̄ ̄| / \妄想命_ | | |__| | \ |つ |__|__/ / / ドキュソ氏ね | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
>>334 *言うだけなら誰でも*
筑波大は一応国立(くにたちじゃないよ)だから。
もまいら全員マ板逝け。
筑波の名を出しただけで、こんなにもレスが伸びるとは みなさん、本当に私に嫉妬してるみたいですね。 そんなにうらやむ事じゃないですよ。どうぞあなたたちも 勉強して筑波に入ってください。一応年齢に関係なく誰でも 受験資格はありますからね。
>>338 言うだけなら誰でも。
まあ俺はマサチューセッツを首席で卒業したから君とは格が違うのだよ。格が。
筑波だか竹馬だか知らんが日本の大学で偉そうにしている愚民どもが。
俺は大学院出たよ。
俺はMITの教授だよ
俺はイェール大だ。MITにはかなわんな。。。
俺カリフォルニア大バークレー校だ。
俺は筑後川波力発電大
>>338 脳内校、略して筑波大だ。
俺は神大だ。
俺は神。俺こそが神。
×神戸大学 ×神奈川大学 ○神大学
>>298 レスありがとうございました。
IDEの導入を考えてみようと思います。
学歴ヲタには英語をテストしてやりゃいいな。 ( )内に適当な語を(a)〜(d)より選べ。 All three are about war, though none is about combat. Perhaps representing a new generation of war films, they ( ) not on the soliders who fought and died but on the women and families left behind. (a)concern (b)deal (c)discuss (d)focus 俺は高校のとき解けた。
> a new generation of war films, they ( ) not on the soliders who fought soldier じゃなくて?
>>350 全然。theの使い方を考えろ。というより語法問題。
the soliders=All three are about warじゃねーの?
All your base are belong to us.
You is a big fool man. ha ha ha.
>>351 soliders って soldiers のスペルミスじゃないん?
You is.
You be.
You bee.
soldiersならアレだな。脳内筑波大君は消えたの?
soliders って知らんのですが、それだと別の解釈になるんすか?
He said that that that that that that that that boy referred to was supposed to indicate, was out of place in the sentence.
"Two grandmothers, with their two granddaughters; Two husbands, with their two wives; Two fathers, with their two daughters; Two mothers, with their two sons; Two maidens, with their two mothers; Two sisters, with their two brothers; Yet only six in all lie buried here; All born legitimate, from incest clear." Explain this - how is everyone related.
What is broken when you name it?
ダイソーにて 「ザ・アクセサリー」
thou
>>270 ありがとう。なんとかなりました。
>>364 そんなことをここで聞いてどうするの?
いた違い。
それと、もう一つあるんですが、現在選択中のタブはどう取得すればいいですか?
下だとインデックスが0になります。
public class Test1 extends JFrame {
Container myContainer = null;
private JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.LEFT);
public Test1(String title) {
super(title);
myContainer = this.getContentPane();
myContainer.setLayout(new BorderLayout());
JLabel myLabel1 = new JLabel("ひとつ目");
JLabel myLabel2 = new JLabel("ふたつ目");
JLabel myLabel3 = new JLabel("みっつ目");
JLabel myLabel4 = new JLabel("よっつ目");
//続く
//続き tabbedPane.add("Label1", myLabel1); tabbedPane.add("Label2", myLabel2); tabbedPane.add("Label3", myLabel3); tabbedPane.add("Label4", myLabel4); getContentPane().add(tabbedPane); JMenuBar myMenuBar; JMenu myInfoMenu; JMenuItem myTabCountMItem; myMenuBar = new JMenuBar(); setJMenuBar(myMenuBar); myInfoMenu = new JMenu("現在選択中なのは " + Integer.toString(tabbedPane.getSelectedIndex()) + "番タブ"); myMenuBar.add(myInfoMenu); myTabCountMItem = new JMenuItem("タブの総数は " + Integer.toString(tabbedPane.getTabCount())); myInfoMenu.add(myTabCountMItem); }
スレ違い氏ねよ
371 :
デフォルトの名無しさん :04/08/30 04:36
すいません質問なんですが、 ./MyBeans/Bean1.class を JavaBeans にするとき $jar cvfm Bean1.jar manifest MyBean/Bean1.class って指定しますよね? この場合、マニフェストファイルって現在のディレクトリ(./)に置かなくちゃいけないんですよね? MyBeans ディレクトリに保存してしまうと 作成はできても実際使うときにエラー出しますよね?
JavaBeansの定義が、狭いような気がするが。 「実際使うとき」がどういう環境を指してるのかわからんし、「エラー出しますよね?」などと同意求められても、どんなエラーかわからんし。
373 :
デフォルトの名無しさん :04/08/30 06:06
こんにちは JLabel jL = new JLabel("ボタン"); jL.setSize(300,20); jL.setBackground(Color.GREEN); 上記のソースでビルド・起動しても、 JLabelのバックグラウンドカラーが変わりません。 試しに、フォアグラウンドカラーは変わりました。 jL.setForeground(Color.GREEN); JLabelのバックグラウンドカラーを変えるためには、 何か他に手続きがいるのでしょうか?
そういう時は、setOpaque(true)だ。 Javaをはじめて3ヶ月。やと人の役に立てたような気がする。
378 :
デフォルトの名無しさん :04/08/30 13:50
JPanel panel = (JPanel)getContentPane() と Container panel = getContentPane() は 同じ ?
379 :
デフォルトの名無しさん :04/08/30 14:01
Jakarta Projectのように、オープンソースライブラリを作成している、 なんとかHouseっていうプロジェクトがあったと思うのですが、 名前を思い出すことができません。 ご存知のかた、教えてください。
380 :
デフォルトの名無しさん :04/08/30 14:03
>>378 同じではない。前者は場合によってエラーになる。
Containerで受ける方が行儀がいい。
そもそもJFrame#getContentPane()が実装しているRootPaneContainerインター
フェイスでは、Container getContentPane() というシグネチャになっている
ので、実体としてJPanelが返って来るという保証はない。
たとえばJFrame#getContentPane()(=JRootPaneへの委譲)みたいに、実装によっ
てはJPanelが返ってくるかもしれんというだけのこと。
JPanelが返ってくるのが分かっているならJPanelにキャストしてもいいが、
自分以外が実装したものでinstanceofでチェックもせずに無条件にキャスト
するのは行儀が悪い。そうしている場合、実装が変わっても文句は言わない
こと。
382 :
デフォルトの名無しさん :04/08/30 14:52
>>381 サンクス。
半分分かって半分分からんorz
後者だと間違いないでよろし?
1行で書くなら、Containerにしとけ、で。 仕様上はContainer返すとしか決まってないんだから、やってみたら 実体がJPanel(Containerの間接的サブクラスだからContainerとして 扱える)だったからって暗黙の期待はするべからずということ。
384 :
デフォルトの名無しさん :04/08/30 15:40
jdkのsrc.jarをかち割ってjavadocかますとどえりゃー事なります。 どつく作った奴のスペックはどんなんなの!自分のマシンjava.beanでもうへこたれます。 2THzの2TBぐらいいるでしょこれ、 privateなもんまでドキュメント化されてるのどっかで見ませんでしたか?
386 :
ケン ◆KENNYY/YXo :04/08/30 15:57
(ケン ´・∀・`)ヌルポ
>386 ありがとうケン!その方法でもっかい試してみるよ
388 :
ケン ◆KENNYY/YXo :04/08/30 17:00
(ケン ´・∀・`)だれだテメー
>>385 cat /dev/null > src.jar
したらスペックが貧弱でも大丈夫ですよ
390 :
デフォルトの名無しさん :04/08/30 17:22
普通はecho -n '' > src.jar
>>373 APIドキュメント見てもいまいち分からないんですが、JListと同じように設定すればいいんですか?
>>374 タブで管理してタブごとにファイルの読み書きをしたいので、タブのインデックスをメニューバーで使用したいです。
>>385 確かに時間かかるな。
src.jar 全ソースで 4分41秒 もかかったよ。
private もつけたし。
CPU が 2THz だったら 0.3 秒くらいかな。たぶん。
393 :
デフォルトの名無しさん :04/08/30 20:35
サーバーからファイルをクライアントへダウンロードする場合 ダウンロードダイアログを表示し、ファイル名と保存場所を指定するのが 一般的だと思いますが、 ダウンロードダイアログを出さずにプログラム上で指定した ファイル名、保存場所に保存させることは可能でしょうか? 調べたのですが実現方法が分からないので、知っている方がいたら教えてください。 お願いします。
>>393 じゃ、俺はダウンロードしたらお前の PC のシステムディレクトリを
上書きするプログラムを書きたい。ダイアログ無しで。
まー、ほんとにやりたいんだったら、WindowsUpdate がやっていることを
ネットワークトレースして見れば?
org.apache.tools.zip.ZipOutputStream を使用して ZIP ファイルを作成したいのですが、 setEncoding でエンコーディングに "Windows-31J" や "Shift_JIS" にしても ファイル名が Shift_JIS になりません。 バイナリエディタで見ても何でエンコードされたのか不明です。 (UTF-8 でも ISO-2022-JP などのほかの日本語コードでもありませんでした。) どなたかうまく行っている方、アドバイスください。
>>396 java.net.URLEncoder
398 :
デフォルトの名無しさん :04/08/30 21:56
>>391 JListにマウスリスナーを仕掛けて、その中で
JList#locationToIndex(Point�location) で取得したインデクスを
保存しておく。もちろんmouseExitedでクリアーも忘れずに。
ドロップ処理の中でその値を取得して、ドロップ先を特定する。
399 :
デフォルトの名無しさん :04/08/30 22:19
>>398 ダメなのです。
swingドラッグサポートが開始されて、マウスカーソルがドラッグ&
ドロップ処理中に移ると(TransferHandler#getSourceActions、
#exportAsDragが呼び出されると)、イベント発生元のコンポーネント
を含む全コンポーネントのマウスリスナーの呼び出しがシャットダウン
されてしまうのです。マウスイベント発生通知がJAVAのシステム部分?で
独占されてしまってるみたいなのです。
そのシステム部分?からマウスカーソルの位置情報を知るにはどうすれば
いいのでしょうか?
>389-390 ありがとう消えてった!わっかんないてそれ向きそれでいいの??なんか裏テクなのかと決めちったぜ 危ないからほんと >392 それ嘘でしょ?ありえないでしょ??本当なら何が違うの?jdk?もし未使用? オプションは?失敗してはいろいろ引数かえてたら javadoc -d ../doc -private -use -windowtitle "Java 2 Platform SE 5.0" \ -doctitle "Java 2 Platform SE 5.0" -breakiterator -splitindex \ -sourcepath ./src -nohelp -quiet -nonavbar -linksource -nonavbar \ -linksource -subpackages * こんなんなっちゃってました、antでやったほうがいいの??あっちのほうが余計くたばりそうだけども これって-Xmxとか入りません?
402 :
デフォルトの名無しさん :04/08/30 22:52
Frameをつかって、Panelのaddとremoveをやってパネルの切り替えをしています。 Appletをつかってaddとremoveで切り替えようとするとうまくいきません。 (removeはできるがaddが反映されない) validateを呼び出して再配置をしてみましたがうまくいきませんでした。 appletで部品の切り返ってどうすればよいですか?
403 :
デフォルトの名無しさん :04/08/30 22:55
>>398 JList#getDropTarget()でDropTagetを取得して、
DropTargetListenerをしかける。
DropTargetDropEvent#getLocation()
404 :
デフォルトの名無しさん :04/08/30 22:56
カードレイアウトを使おう!
まず、日本語だな。
406 :
デフォルトの名無しさん :04/08/30 22:59
>>400 4分は ant だよ。maxmemory
あるオブジェクトをシリアル化しようと思ってます。そのとき、 Imageのようなシリアル化できないオブジェクトがフィールドとしてある場合 そのフィールドだけシリアル化の対象外にすることはできますか?
transient
>>409 こんなキーワードあったんですね。初めて知りました&使います。
ありがとうございました。
>>410 言っておくが、transient指定するとシリアライズ対象外になるんだから、
その部分をどうやって保存/復元するかは自分で決めないといかん。
再現時に無視できるフィールドなら気にしなくてもいいけど、たとえば
Imageを
private void writeObject(ObjectOutputStream out) throws IOException
を定義してピクセル値の配列で出力、
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
を定義して、その配列を読み取って再構成
する必要があるかもしれない。
しかし、なんかネタっぽい質問だな。 例の単発分かりきった質問厨じゃないか?
>>411 transient指定したImageは代わりにPixelGrabberでint[] pixelsにして
このint配列をシリアル化するようにしました。
復元するときはint[] pixelsからcreateImage(MemoryImageSource)で
Imageを再構成しました。
>>412 ネタじゃないです・・・オブジェクトのシリアル化機能自体最近知って感動してます。
今まではフィールドごとにテキストで出力しようとしてました。
>401その言葉かなりぐっときたどうも -helpで表示される以外にオプションがこんなにあるんね、あとは1.4と1.5の違いにたまげた やりたかった日本語1.4docをまーじつーるのお力拝借して1.5のsrcにねじ込む。 それで1.4|=1.5docできない、の。か?@assert?眠すぎでわかんないけど、 >407 antかなりすっごい使い勝手よすぎでした。反則気味にjavadocより早かった、気になって追っかけて見たら生で叩いてる。のかな?もーだめだ エラーじゃばじゃば出ますがなんとかいけそうです。1.5と互換の問題で作らないほうが ありがとうございましたおやすみなさい
415 :
デフォルトの名無しさん :04/08/31 11:04
質問ですが、 StringBufferクラスにsubstringという部分文字列を取り出すAPIがありますが、 以下のようなデータを決められたフォーマットにしたがって取り出していくのですが、 200005141092ブロードアピール 570松永幹 このデータをsubstringで取り出すと、半角と全角を同じ「1」のオフセットとして扱うため、半角として30文字取り出したいのに、substringだと 全角30文字として取り出せれてしまい、データがずれてしまいます。 StringBuffer(String)にある文字列を半角として部分的に取り出すことは可能でしょうか?
>>415 30byte取り出したいって事か?
フォーマット決まってるなら、半角の文字数+全角の文字数指定すればいいだろ。
417 :
デフォルトの名無しさん :04/08/31 11:29
二つ質問させてください。 フレームの中に複数のパネルを配置して各々の場所で何らか作業する場合、 それらのパネルは一つ一つスレッドを使って作業させた方がよいのでしょうか? またスレッドは百個くらい起動させても同機がとれるものなのでしょうか?
>>417 スレッドに分けるかどうかは作業の内容による。
スレッドの同期は自分で取らなきゃだめ。
419 :
デフォルトの名無しさん :04/08/31 11:37
>>400 JavadocはAntで使うのが常識だよ。
俺の中では
420 :
デフォルトの名無しさん :04/08/31 11:39
>>414 > >407
> antかなりすっごい使い勝手よすぎでした。反則気味にjavadocより早かった、気になって追っかけて見たら生で叩いてる。のかな?もーだめだ
> エラーじゃばじゃば出ますがなんとかいけそうです。1.5と互換の問題で作らないほうが
何が何を生で叩いてるのだ?
どんなエラーが出るのか?
お主が書いたAntのjavadocタスクのコードを見せてみろ
421 :
デフォルトの名無しさん :04/08/31 11:56
JListのデフォルトのマウス動作は、プレスするとその一つのセルだけを 選択状態にしますけど、こういう各コンポーネントのデフォルトのマウス イベント処理を無効にするにはどうすればいいのでしょうか? ドラッグサポートを使いたいのでremoveMouseListener()以外の方法で お願いします。
422 :
デフォルトの名無しさん :04/08/31 12:23
>>418 レスありがとうございます。
たとえばボタンだけ配置されているパネルとかは
スレッドに分ける必要はないのでしょうか?
>>415 結局、そのデータで馬名が日本語の場合、C言語だと2バイトになるけど、
Javaの場合UNICODE扱いだから、1バイトになって処理されるのが問題なんですよね?
ならば、その文字が英字なのか?そうでないのか?を調べればいいのではないでしょうか?
Stringクラスに正規表現をつかって文字列内の情報を調べるものがあります。
matches(String regex)
regexには正規表現を指定してください。javadocに詳細があります。
そこで、matches([0-9])みたいにその文字列が0から9の数値なら〜みたいに文字列を調べればいいのです。
424 :
デフォルトの名無しさん :04/08/31 12:28
JavaAppletによって描いて出来た画像をサーバーに保存したいのですが、 どうすれば良いのでしょうか? 画像データとしてCGIに送るのかと思い、調べたのですが解りませんでした。 キーワードだけでも教えていただければ頑張って調べます。 あほなので出来れば解りやすくお願いします。
そのサーバーがどのプロトコルを用い、どんな受付方法を設定してるかで 千差万別だけど、最も一般的なHTTPなら、URLConnectionでつないで、 それから得たOutputStreamインスタンスで送ろう。 あとはサーバーの問題です。
>>424 CGIでバイナリを受け取るのって、実は文字を受け取るより簡単だと思う
ただサンプルは少ないかもな
>>425 >>426 ありがとうございます。
良く解ってないのですが、頑張って調べていきたいと思います。
428 :
デフォルトの名無しさん :04/08/31 15:46
正規表現についてお尋ねします。 String TestString = "123abc456"; このTestStringの中に、"abc"が入っているかどうかを 判断するにはどのようにしたらよいのでしょうか?
430 :
デフォルトの名無しさん :04/08/31 16:29
スレ違いって訳でもないよ。 TestString.matches(".*abc.*") でOK
単に文字列が入っているか調べるだけなら TestString.indexOf("abc")で-1が戻ってないか判定するだけでもよさそう。
432 :
デフォルトの名無しさん :04/08/31 16:52
>>430 レス有難うございます。ご指摘の通り試したところうまく動作しました。
Perlで正規表現使ってたんですけど、Javaとの違いにまだ慣れてないみたいです。
勉強します_| ̄|○
>>431 う…、そう言われればそうでした。
どうしてコンパイルすら通らないんでしょうか? import java.awt.*; import javax.swing.*; import javax.swing.event.*; public class Test extends JFrame implements ChangeListener { JLabel label = new JLabel("項目を選択>インデックスを表示"); JTabbedPane tabPane = new JTabbedPane(); Test() { JLabel myLabel0 = new JLabel("ひとつめ"); JLabel myLabel1 = new JLabel("ふたつめ"); JLabel myLabel2 = new JLabel("みっつめ"); JLabel myLabel3 = new JLabel("よっつめ"); tabPane.addchangeListener(); getContentPane().add(label, BorderLayout.NORTH); getContentPane().add(tabPane); //続く
//続き tabPane.add(myLabel0); tabPane.add(myLabel1); tabPane.add(myLabel2); tabPane.add(myLabel3); } public void stateChanged(ChangeEvent e) { label.setText(Integer.toString(tabPane.getSelectedIndex())); } public static void main(String s[]) { Test myApp = new Test(); myApp.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); myApp.setBounds( 130, 130, 640, 480); myApp.setVisible(true); myApp.setTitle("Test"); } }
>>433 コンパイル時にどこでどんなエラーメッセージが表示されるのかぐらい書けよ
>>433 ここが変
tabPane.addchangeListener();
java2 SDK1.5をインストールしたらアンインストールできなくなりました。 どうすればいいですか?
>>437 ・あきらめる
・OSから再インストール
好きな方を選べ
コントロールパネルからアンインストールできないんですか?
>>440 ・該当のレジストリを消す。
・インストールディレクトリ(JDK)を消す。
・システムディレクトリの java.exe とか(JRE)も消す。
・窓の手とかでアプリ追加/削除のエントリを消す。
で、アプレットが動かなくなると。
442 :
デフォルトの名無しさん :04/08/31 20:12
質問させてください。 今Javaでアプリケーションを作ってみようと思っています。 GUIに使うものとしてswingを考えていたのですが、 動作が遅いと聞いたので、AWTとどっちがいいか迷っています。 AWTとSwingってそこまで速さに違いがあるのでしょか? ちなみに作るコードは500KB位と考えています。 どうかよろしくお願いします。
>>435 >>436 すみません。
シンボル: メソッド addchangeListener ()
場所 : javax.swing.JTabbedPane の クラス
tabPane.addchangeListener();
シンボルtabPaneが解決出来ないと出ます。JDK1.4.2_5です。
ラベルにインデックスを出したいのですが・・
444 :
デフォルトの名無しさん :04/08/31 20:45
標準に設定されたブラウザにアドレスを与えて ブラウザを起動させたいんですけどどうしたらいいですか?
445 :
デフォルトの名無しさん :04/08/31 20:50
>>443 もう解答は上に出てるよー。
addChangeListener()に、パラメータがないんだよー。
かっこの中にChangeListenerの実装インスタンスを入れておくれよー
446 :
デフォルトの名無しさん :04/08/31 20:53
>>442 どっちも大して変わらないよー。
と言うか、AWTは未完成のGUIコンポーネントなので
今使う意味は全くないですよー。
何だかんだ言ってもSwingが最もポピュラーなんですよー。
速度がそんなに気になるならSWTをつかっておくれよー。
447 :
デフォルトの名無しさん :04/08/31 20:55
449 :
デフォルトの名無しさん :04/08/31 21:00
>447 javaプログラムでイベントを受けた際に >444のような処理を行いたいんです。
>>445 >>448 最初は
addchangeListener(this)としていたんですが、cが小文字なのを気付きませんでした。
ヒントを下さりありがとうございます。
452 :
デフォルトの名無しさん :04/08/31 22:29
アプレットで,イベントを受け付けた際に,ブラウザ内の別フレームにHTML を出力するプログラムがうまく動きません. コンパイルは通るのですが,ソースの static AppletContext appletcontext; の部分でエラーが起こります. この場合,どのような原因が考えられるでしょうか? import java.applet.*; import java.net.*; public class applet extends Applet { static AppletContext appletcontext; public applet() { appletcontext = getAppletContext(); try { URL url = new URL(getDocumentBase(),"frame.html"); appletcontext.showDocument(url,"frame"); } catch(MalformedURLException e){} } }
何かアプレット系の質問多いですね。
サーブレットの質問です。 コンテントタイプをiso-8859-1で設定している入力画面から 全角文字が入力された場合エラーにしたいのですが、全角 文字の判定方法がわかりません。 コンテントタイプをシフトJISにすればできるのですが、 コンテントタイプは変えられないので困っています。
455 :
デフォルトの名無しさん :04/09/01 08:37
おはようございます、起きぬけで恐縮ですが質問させてください。 Java Applet から CGI プログラムを呼び出して、返って来た バイナリデータを byte b[] に収めたいと思い、以下のような ルーチンを作りましたが、問題があります。 byte b[] = null; InputStream in = null; URLConnection uc = null ; try { URL u = new URL(getCodeBase()+"getdata.cgi"); uc = u.openConnection(); in = uc.getInputStream(); byte buf[] = new byte[16384]; int n; System.out.println("Content-length: " + uc.getContentLength()); // ここで -1 が返る ByteArrayOutputStream bos = new ByteArrayOutputStream(); // ここに問題がある? while((n = in.read(buf, 0, buf.length)) != -1){// bos.write(buf,0,n); } in.close() ; b = bos.toByteArray(); (以下継続)
456 :
デフォルトの名無しさん :04/09/01 08:37
(455続き) この方法で処理を行うと、一見するとデータが読み込めているように 見えるのですが、実際に読み込まれたデータは、0x0a のデータが 0x0d,0x0a に置き換わってしまい元のサイズより大きくなってしまい ます。どうやらテキストデータのCRLF置き換えが勝手に行われている ようなのですが、この問題を回避する方法はありますでしょうか? よろしくおねがいします。
>>452 getAppletContext()をコンストラクタじゃなくてinit()で行う かな。
コンストラクタ実行時点ではAppletStubが設定されてないから。
>>454 元々Shift_JISやWindows31Jに含まれる文字しか入ってこない
前提があるのならgetBytesして判別もありだと思うけど、まあICUみたいな
ライブラリ使うのがまともじゃないかな。
>>455 それ、元のCGIからは確実に0x0aで吐き出されているの?
他の手段で確認した?
ほんとはcontent-type: textのコンテンツは改行 コードは<CR><LF>ってことになってるから0x0aで 送ってもらうこと自体がアレ。みんな守らないから クライアントも0x0aも想定してコード書かないと いけないけどね。
>457さん それはこんなやつでしょうか。 public boolean byte_str_check( String i_str_data) { int str_len1 = i_str_data.length(); //エンコード try { i_str_data = new String(i_str_data.getBytes("8859_1"), "Shift_JIS"); } catch(Exception e) { return false; } //lengthの比較処理 } こちらは試してみたのですが、GetBytesでうまく全角文字に変換されません。 引数に与える文字コードが間違っていますか?
>457さん それはこんなやつでしょうか。 public boolean byte_str_check( String i_str_data) { int str_len1 = i_str_data.length(); //エンコード try { i_str_data = new String(i_str_data.getBytes("8859_1"), "Shift_JIS"); } catch(Exception e) { return false; } //lengthの比較処理 } こちらは試してみたのですが、GetBytesでうまく全角文字に変換されません。 引数に与える文字コードが間違っていますか?
>457さん それはこんなやつでしょうか。 public boolean byte_str_check( String i_str_data) { int str_len1 = i_str_data.length(); //エンコード try { i_str_data = new String(i_str_data.getBytes("8859_1"), "Shift_JIS"); } catch(Exception e) { return false; } //lengthの比較処理 } こちらは試してみたのですが、GetBytesでうまく全角文字に変換されません。 引数に与える文字コードが間違っていますか?
3連続で荒らすとはやるな
463 :
デフォルトの名無しさん :04/09/01 11:27
455 です。 > 457 氏 すまんす、ご指摘の通り、CGI(Perl)側の問題のようでした。 Win上でローカル試験してるんですが、きちんと binmode の 出力を指定しているにも関わらず、0x0d,0x0a 変換していま した。Linux 上でリモート試験したら正常に動きました。 以後は Win & Perl の問題なのでそっち方面で解決します。 ご指摘感謝&吊ってきます。
vectorでオブジェクトを追加した場合、vectorにはオブジェクトへのポインタが入るのでしょうか? それとも追加するオブジェクトのコピーが生成されるのでしょうか?
vectorと小文字で書かれているからSTLのスレか何かと思ってしまった。 内部では配列に代入しているだけなので、あなたのいうポインタです。 コピーを生成して代入していると仮定すると、Vectorに格納されるすべ てのインスタンスは、Cloneableを実装しているか、Serializableを実装 しているか、といった限定が付きそうなものですが、実際にはそうでは ありませんね。
>420、ご報告までに、生で叩くってのは書いた本人も意味わかりません。無視してください <target name="javadoc"> <javadoc destdir="${docs}" author="true"version="true" locale="ja"sourcepath="src" charset="Shift_JIS"encoding="ms932"docencoding="ms932" maxmemory="256m"access="private"failonerror="false" splitindex="true"windowtitle="Java 2 Platform, Standard Edition, 1.5.0"> <packageset dir="src"><include name="**/**" /></packageset> <doctitle><![CDATA[<EM><b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Standard Ed. 5.0</b></EM>]]></doctitle> </javadoc></target> [javadoc] パッケージ javax.imageio.spi のソースファイルを読み込んでいます... [javadoc] javadoc: java.lang.OutOfMemoryError: メモリを増やしてください。 [javadoc] たとえば、Sun の classic もしくは hotspot VM では、-J-Xmx32m のように [javadoc] -J-Xmx オプションを使用します。 [javadoc] 61 errors [javadoc] 224 warnings BUILD SUCCESSFUL Total time: 41 minute 35 seconds お亡くなりになります。何も作られません。<include name="org/**" />でまわすと 19 errors 3808 warnings BUILD SUCCESSFUL Total time: 13 minutes 11 seconds なんかエラーは出ますが、最後までいきます。 これは完全にスペックの問題ですね?指定してる256mも実際256しかないので150mぐらいしか使えないんじゃないかと、PC100のメモリー最近はもう売ってないですし、困りました。当然かなりスレ違い野郎ですね。 入れ食いエラーの内容は、"assert はキーワードなので識別子として使うことはできません。"でした。
おぉ、そっか。 だとするとArrayListなんかもポインタか ちょいとコレクションフレームワークを復習しよう
>>465-466 ありがとうございます。
mallocが使えないんで苦労していましたがこれで何とかなりそうです。
>>468 そのまえに、Javaの参照を勉強しなおせ。
Javaでmallocとか意味わかんねぇ・・・
Cは知ってるんだぞ、というささやかな主張だ。 言語別に勉強できてないことを露呈したわけだが。
というか、Cでもムダにmallocしてそうな悪寒。
474 :
デフォルトの名無しさん :04/09/01 20:32
文字のデータを切り取るメソッドを作りたいのですが 下のようにしているとスタート値が0で終了値が30の時には 30文字を取りに行ってしまいます 30文字ではなくて30byteで取りたいのですがどのようにすればいいのでしょうか ご教授お願いします 返り値はStringで返したいです String getSubData( String str, int s, int e ){ String substr; substr = str.substring(s,e); return substr; }
getBytesする。
"hoge".hashCode()のように文字列リテラルのハッシュ値等は定数式にはなれないのでしょうか? static finalで宣言してもinterfaceで実装してもコンパイラに定数式じゃないと怒られてしまいます
477 :
デフォルトの名無しさん :04/09/01 20:55
>>475 こういう人って文字コードとか文字幅とかどう考えてるんだろ?
たとえば帰ってくるデータが 0000あいうえおかきくけこ123asdああああ みたいな文字列で 00 00あいうえおか きくけこ123 as dああああ の様に切り分けたいんです、、さっきのちょっと直してみたんですが全然ダメでした・・・ byte[] substr; substr = str.substring(s,e).getBytes(); return substr.toString();
>>478 長さをbyteで計算して切り出したいのに、getBytesする前に
substringしたら意味ないだろう。あとbyte[]からString
にもどすときはStringのコンストラクタ使う。
でもさ、474のやりたいことは、多分こういうことじゃないと
思うけどね。
480 :
デフォルトの名無しさん :04/09/01 21:13
ちょっとやりたいことが明確になってないので書いて見ます 切り分ける元の文字列はネットワークから取得してきたString 単純にsunstringすると30文字取ってきてしまうのでアレ byteで30byte取ってくる、マルチバイト文字列が入っていても可能でなければならない メソッドからreturnするときはString型で返したい。 ってな感じなんですけども。。。
まあおそらく日本で主に使われている環境でいわゆる半角文字を30文字 拾ってきたいってことなんだろうなあ。手抜きするならShift_JISに 変換して自前で切り分け処理だろうけど、ちゃんとするならICUかな。
482 :
デフォルトの名無しさん :04/09/01 21:20
>>478 元のデータの文字コードは気にしなくていいのか?
byte[] sbyte = str.getBytes("エンコーディング入れる");
byte[] pbyte = new byte[(e - s)];
for (int i = s, j = 0; i < e; i++, j++) pbyte[j] = sbyte[i];
return new String(pbyte, "エンコーディング入れる");
だいたいこんな感じ。
アプレットを使っていて、JDK1.4.2_05にバージョンアップしたら java.security.AccessControlException: access denied (java.lang.RuntimePermission charsetProvider) とエラーが発生するようになりました。 どうしたら解消しますか? ご教授お願いします。
ありがとうございました!!!
>>478 様のソースで完璧に問題なく動きました
ちなみにエンコーディングはサーバーで処理するんで考えなくても大丈夫です。。。
みなさまありがとうございました。
>>484 30byte目がマルチバイトの1バイト目だったらどうするとかなんも考えてないのね。
まあ474の視点で問題ないならいいや。
サーバー処理で30バイト目にはマルチバイトの1文字目は来ない設定でやってるので大丈夫です 度々説明が足りませんでした、、、とにかくありがとうございました!
487 :
デフォルトの名無しさん :04/09/01 22:45
なんで Swing の入力検査ってイベントじゃないんですか? JComponent#setInputVerifier(InputVerifier iv) で入力検査を実装できますが、 なぜ JComponent#addInputVerifyListener() のようにしなかったのでしょうか? イベントになっていないからだと思いますが、ほとんどの IDE の GUIエディタが この入力検査のスケルトンを吐いてくれません。めんどくさいです。
まぁ1.3から導入と言うところからして完璧後付だし、 setなのでプロパティのところで簡単に出来るだろ
490 :
デフォルトの名無しさん :04/09/02 02:17
iアプリですが、低レベルAPIでgifアニメの使用はできますか?
491 :
デフォルトの名無しさん :04/09/02 06:45
おまいぐらい低レベルだと無理
492 :
デフォルトの名無しさん :04/09/02 06:53
byte配列 byte[] をStringに変換するには どうすればいいのでしょうか? 初歩的な質問ですいません。
>>493 String a = new String( bytes[] );
>>494 ありがとうございました
あと一つ申し訳ございませんが
byte[]として作った配列の長さを調べるにはどうすればいいのでしょうか?
Byte[] by = strbuf.toString().getBytes();
としてbyte配列を作ったとしても、そのbyte配列の長さがわかりません。
Stringの文字列とは異なる部分が出てくるはずですから。
>>495 int len = by.length
Javaを初めから勉強し直せっていうか、勉強中?
Java関連の本とか読んでないのか?
498 :
デフォルトの名無しさん :04/09/02 12:35
Java関連の質問ということでここに書きます。 Java歴7年、2ch歴1年の中年オヤジです。 なぜ、2chでは Null Pointer Exception.(ぬるぽ) が流行っているのですか? IE経由で見ても、アプレットやJSPを使っている気配はないし、 2chブラウザ?でも、Javaでできているものはなさそうだし。 それに、こんなに多くの人が集まる2chで Javaプログラマーがそんなにいるとはとても思えません。 2chを見ていれば、いつか分かると思って一年。 結局疑問は深まるばかりでした。
調べもしないでだまーって待ってたんだ。 歴が長くなるだけで無能な人なんだろうな。
500 :
デフォルトの名無しさん :04/09/02 12:41
ぬるぽ
>>499 無駄な知識は増えました。
プログラム系のスレの特徴は書き込みを見て、
あなたみたいに技量をプロファイリングする人が多いです。
これは、他の板には少ない大きな特徴です。
人付き合いが下手で理屈っぽい人が多いという、
プログラマーの傾向がよく出てます。
505 :
デフォルトの名無しさん :04/09/02 13:00
ぬるぽ なんか使ってる奴は童貞でハゲ
1年も見てて板違いな質問をするとは・・・
>>502 あなたも相手をプロファイリングしてるということで、人付き合いが下手で理屈っぽいプログラマーの傾向がよく出てるわけですね。
調べずに板違いな質問をし、自分のレスで自爆するおじさんがいるスレはここですか?
509 :
デフォルトの名無しさん :04/09/02 14:43
いま流行りはArithmeticException
510 :
デフォルトの名無しさん :04/09/02 16:21
eclipseの動作が重すぎて使えません。 ちなみに3.0なんですが他に軽いのはないものでしょうか?
511 :
デフォルトの名無しさん :04/09/02 16:26
メモ帳
512 :
デフォルトの名無しさん :04/09/02 16:26
vi
513 :
デフォルトの名無しさん :04/09/02 16:33
>>516 初心者ならエディタ+javacで頑張るのもいいんじゃないかな。
eclipse が重い? バカ言うなって。 eclipse が重いってことは、作成したプログラムも重いってこった。 素直にパソコン買い替えとけ。
たぶんwin32ネイティブも最近のアプリならヘビーすぎてきついだろうな もちろんIEは3までだよな
>510 DevBoosterつーのがあるぞ。なかなかいい。
>>517 初めはそれで頑張らないと勉強にならないっていうのも見たんですけど、
やっぱりエディタでしこしこ書くのは辛いんですよね。まあそんぐらい頑張れって話なんですが。
>>518 有り難うございます。試してみます。
>>520 netbeansも重くて無理でした。
>>523 有り難うございます。早速調べてみることにします。
メモリぐらい差せ。 NetBeansは192MBからだぞ。使えるのは。せめて128MB。 ただ、メモリ128MBあって重いといってるなら、我慢して使え。 補完もないエディタでしこしこと無駄な努力するのは、べつにJavaの勉強にはならないよ。 javacでコンパイルも、コマンドプロンプトの勉強にはなるだろうけど、あまりJavaの勉強とは関係ない。 使うライブラリをちょっと増やすとjavacはめんどくさくなるし、antは初心者が最初から使うにはどうかと思うし。 単純な入力ミスで悩むなら、補完やエラー表示のあるエディタ使って、他のことで悩む方が有意義。
>>526 確かに…。入力ミスで何回か悩んだ事あります。
ちなみにメモリは64MBです。終わってます。
>>527 窓から投げ捨てて新しいマシン買え
もしくはエディタで我慢しろ
eclipse 3は2に比べてけっこう重いと思う。 少しの間だけど反応なしに陥るときがしばしばある。 結局2に戻した。 メモリは256MB
530 :
デフォルトの名無しさん :04/09/02 20:37
3を今使うことないじゃん マイナーバージョンがあがるまで待とう
>>529 NetBeansはバージョンあがるたびに軽くなるのにね。
NetBeans4も、なんとなく軽くなった気がする。
532 :
デフォルトの名無しさん :04/09/02 22:13
>>529 Eclipseには将来IBM JDKが搭載されるらしい。
けど、3.0で何を使ったら重たいのだ?
念のため補足しておくけど、入力のレスポンスは、NetBeansは仕組み的にEclipseには敵わないけどね。
>>532 もうIBM JDK抱き合わせのeclipse、配布始まってるよ。
NetBeansって内部で独自のイベント回しだっけ あれなくなればかなり早くなるのになぁ SwingのシステムLAFになった3.6はだいぶいいやね J2SE5のネイティブLAFで動かせばどうなるか激しく気になるけど
536 :
デフォルトの名無しさん :04/09/03 02:02
質問です。 アプレット上からディスク上にファイルを出力しようと試みたんですが、 アクセス権限エラーが発生してうまくいきませんでした。 調べた結果、ポリシーファイルをクライアント上に用意されてあるらしく、 それにアクセス権限を追加し、うまくいきました。 問題は、JavaScriptからアプレットを呼び出したときのみ、 なぜかうまくいきません。これは、仕様なのでしょうか?
537 :
デフォルトの名無しさん :04/09/03 02:07
Apache+TomcatでWebサーバーを構築しています。 なんとかFullGCを起こしたいのですが良い方法はありませんか?
タブ区切りのテキストファイルの、例えば Matrix.txtで ab 11001 21002 31003 ... ... を配列形式で [a][b] [1][1001] ... ... と読み込むにはどうすればいいでしょうか? 最終目標は、1+1001,2+1002,...と計算させたいと思っています。 ※縦長ですみません
539 :
デフォルトの名無しさん :04/09/03 07:23
テキストを一行ずつ読み込んで java.lang.String#split(regex); で切ればいいんじゃね?
>>529 それは俺も強く実感した。
P3 866MHz Mem256MByte のマシンに
Eclipse 3 を入れてたとき。
お前らPC買い換えろ。IBMの最新のに。
542 :
デフォルトの名無しさん :04/09/03 10:56
>>538 ライブラリーの StringTokenizer がお勧め。
google 検索すれば、解説サイトがいっぱいHitするから。
>>523 DevBooster軽かったです。しばらくこれを使ってJavaの勉強をしてみようと思います。
まだRCだからなんとも
java.lang.Voidってなん?なに?なぜ?java.lang.Nullはなくて?
戻り値なし(返値の型がvoid)のメソッドをリフレクションで扱うときに、 java.lang.reflect.Method#getReturnType()が返すくらいかな。
>>538 ,
>>542 勝手に作ってみたw
import java.util.*;
public class StringToken{
public static void main(String[] args){
String[] str=new String[]{"a\tb","1\t1001","2\t1002","3\t1003"};
String[][] matrix=new String[3][2];
int i=0,j;
StringTokenizer st;
for(i=0;i<3;i++){
st=new StringTokenizer(str[i],"\t");
for(j=0;j<2;j++){
if(st.hasMoreTokens())matrix[i][j]=st.nextToken();
}
}
for(i=0;i<3;i++){
for(j=0;j<2;j++){
System.out.print("(i="+i+",j="+j+")["+matrix[i][j]+"] ");
}
System.out.print("\n");
}
}
}
Split版作って試してみたら、自宅PCはJ2sdk_1.3だった。。。_| ̄|○
>>545 それでも、激しく気になるのなら試せ、と。
そして結果を教えてくれ。w
551 :
デフォルトの名無しさん :04/09/03 23:25
>>538 たぶんStringTokenizerを使わなきゃもっと短くなるはず。
がんばって5行にしてくれ。健闘を祈る。(違
import java.io.*;import java.util.*;class z{static public void main(String[]a)
throws Exception{File f=new File(a[0]);byte[]b=new byte[(int)f.length()];new
FileInputStream(f).read(b,0,(int)f.length());StringTokenizer t=new
StringTokenizer(new String(b),"¥t¥n");String[][]c=new String[(t.countTokens()/2)
][2];int[]x=new int[2];for(int i=0,j;t.hasMoreTokens();i++){for(j=0;j<2;j++){
c[i][j]=t.nextToken();x[j]=Integer.parseInt(c[i][j]);}System.out.println(x[0]+
"+"+x[1]+"="+(x[0]+x[1]));}}}
>>551 win対応で StringTokenizer t=new StringTokenizer(new String(b),"\t\r\n");
553 :
デフォルトの名無しさん :04/09/04 04:13
>>551 6行w
import java.io.*;import java.util.*;class z{static public void main(String[]a)
throws Exception{File f=new File(a[0]);int i=0,j,l=(int)f.length();byte[]b=new
byte[l];new FileInputStream(f).read(b,0,l);StringTokenizer t=new StringTokenizer
(new String(b),"¥t¥n");String[][]c=new String[(t.countTokens()/2)][2];int[]x=new
int[2];for(;t.hasMoreTokens();i++){for(j=0;j<2;j++){c[i][j]=t.nextToken();x[j]=
Integer.parseInt(c[i][j]);}System.out.println(x[0]+"+"+x[1]+"="+(x[0]+x[1]));}}}
>547 java.lang.reflect.Method#getReturnType()なるほど リフレクションっての理解に時間がかかりました。もう5時です。 これってすさまじくないですか?いやー聞いてみるものでした。すんばらしい情報ありがと おもしろくて試しに色々やっちゃいましたよ。結論は多用すると地獄ですが これ以外に利用法ないです?さらっと探すとないんだけど、もしVoidってこれだけの為にあるの? さてもう5時です。
こんにちは AWTにCanvasがありますよね このCanvasをJPanelにaddして、そのJPanelをJScrollPaneにsetViewportViewしたんですが、 スクロールさせると、スクロール範囲外にもCanvasの内容が描かれてしまいます。 Graphicsクラスを使い描画できるSwingのクラスのクラスはないのでしょうか? おそらく、AWTとSwingとがかみ合わないからだと思うのですが。
//JPanel jP = new JPanel(); jP.setPreferredSize(new Dimension(1000,1000)); jP.setBackground(Color.BLUE); jP.setLayout(null); //Canvas関連の初期化 mc = new MyCanvas(); mc.setBounds(100,100,200,200); mc.setBackground(Color.CYAN); jP.add(mc); //JScrollPane関連の初期化 setViewportView(jP);
558 :
デフォルトの名無しさん :04/09/04 10:29
>>556 普通にJPanelに描画できるよ
CanvasのかわりにJPanel使えばOK
>>539 そんなやり方するんだったらStringTokenizer使った方がいいかと思われ。
ガイシュツだった
>>558 ご返答ありがとうございます
JPanelからgetGraphicsでオブジェクトを取り出し描画したんですが、
NullPointerが発生してしまいます。
どうしてなのでしょうか?
Graphics g;
g = jP.getGraphics();
g.drawLine(10,10,100,100);
562 :
デフォルトの名無しさん :04/09/04 11:06
>>561 Graphicsは、paintComponent()のの引数からとる。
JPanelはサブクラス化しないとダメだよ。
>>562 ご返答ありがとうございました
解決しました。
初歩的な質問に答えていただきまして
本当にありがとうございました。
>>546 似たようなところでは、Integer.TYPEみたいなのがある。
Class#getMethodでMethodオブジェクトを取ってくるときは
同一名で型の異なるメソッドを区別するために引数の型
を表すClassの配列をあたえてやるわけだけど、このとき、
int foo(int i)とint foo(Integer i)を区別するために、
それぞれ Integer.TYPE と Integer.class を使う。
TYPEを使うのはそれくらいかな。voidは引数になりようが
ないので、返値の型くらいでしか需要はないです。
566 :
デフォルトの名無しさん :04/09/04 18:27
すいません、質問です。 Java Beans の PropertyEditorSupport クラスを継承する形でプロパティエディタを自作しています。 getCustomEditor() を使って GUI エディタを表示させるところまではできたのですが、 ここで変更した値というのはどうやって呼び出し元に戻せばいいのでしょうか? firePropertyChange 使っても何故か反映されない・・・。 テスト環境は NetBeans 3.6 です。よろしくお願いします。
567 :
デフォルトの名無しさん :04/09/04 18:54
>>566 PropertyChangeListenerを登録しる
568 :
デフォルトの名無しさん :04/09/04 21:02
すいません、質問いいですか? 前にディスプレイデバイスが破損して修復した後から アプレットが表示されなくなってしまいました。 sun javaを入れたり、設定はすべてあわせたのですが 全然直らないし何が原因なのかさっぱりです。 ちなみに東芝、ダイナブックの 動作環境がwinMEのIE6です。
うん、なんていうか板違いだよね。
すいません、スレ違いでしたか…。
571 :
デフォルトの名無しさん :04/09/04 21:20
>>567 レスどうもです。
結局のところ PropertyEditorSupport クラスを継承したクラスの中に(内部クラスとして)
カスタム GUI を実装してそれを getCustomEditor() で返す、っていう手を使ったら
上手くいってしまったんですが、どうなんでしょう、、、
なんか根本的な解決になってないというか、、、。
Javaほどプログラミングしやすいものは見たことがない。 すごいよJavaは。
573 :
デフォルトの名無しさん :04/09/04 22:09
RMIで教えてください。 codebaseをftpにて定義したいのですが、この場合ユーザ名、パスワードを指定して URLを記述することは可能ですか? また、クライアント〜サーバ間にて異なる物理ディスク環境の場合、http以外だと どのような手段がよいでしょう?
574 :
デフォルトの名無しさん :04/09/04 22:10
StackTraceの読み方がわかるサイトってありませんか? だーっと出てくるけど、何のことかサパーリわからないので。 あれがわかるとデバッグがやりやすくなるんでしょうか?
読み方もなにも、 Exception in thred "スレッド名" 例外クラス名: 例外メッセージ at 例外が発生したクラス名.メソッド名(それを含むファイル名) at ↑を呼び出したクラス名.メソッド名(それを含むファイル名) at ↑を呼び出したクラス名.メソッド名(それを含むファイル名) ...(以下繰り返し) だけだろうに。
>>575 それはそうなんですけど、それをデバッグにどう生かしたらいいかが
よくわからんですよ
>>576 デバッグっていうか、何がどこで起こってるかわかるだけ。
> タブ区切りのテキストファイルの、例えば Matrix.txtで a b 1 1001 の質問でしたが、542のカキコがあった時点で StringTokenizerクラスの nextToken()を使って書いちゃいました。 539,542,548,552,553,554 さん、ありがとうございました。
579 :
一流プログラマー :04/09/04 23:54
ヴぉけども!MSの仕組みさえわかればなにもダッシュだろが!!
580 :
デフォルトの名無しさん :04/09/05 00:28
>>572 逆に言えば、最近になってようやく使える言語ができたって事で
振り返ってみると、これはちと驚きだな。
JAVA自体もようやく使える形になったのは1.2からだし、それまでの
主流言語はなんとC++。 しかし、STLは1999年前後にようやく
正式登録されてるという始末。
大昔から星の数ほどプログラミン言語は存在してるのに、まともなのは
全然ないとは、やっぱり有志や研究所で作るのはダメで、それが即
利益に直結するような営利企業が作らないとダメって事なのか。。。
>>580 Javaがその時期にでてきたのは基礎理論の発展によるだろが。
同じような時期から、Rubyなど、個人が作った使える言語も増えている。
もちろんある程度の市場性を持って使い物になるためには営利企業主体である必要があるわけだが、それは当たり前の話だ。
会社の生死にかかわるからなぁ
>>581 オブジェクト指向言語の実用化は、1997〜8になってようやく完成されたと
いう事なのだろうか。
海外じゃsmalltalkは結構メジャーだったとはいえ、JAVA登場以前の
OOPでもっともメジャーだったのは、結局エセOOP言語のC++だった。
プログラミング言語の発達は想像以上に遅いな。
>>583 言語の前に、コンポーネント技術の壁の方が大きかったのではないかと。
>>583 自分がメジャーになってる言語しかみてないだけ
>>577 場所を確かめてくしかないってことか
ありがと
>>586 そんなことは言ってない。
デバッガ使え。
>>585 メジャーになってない言語はうんこ。自己満足でしかない。
>>588 言語をメジャーにして金儲けするのは自己満足ではないのか?
言語談義はスレ違いです(はぁと
再びアドバイス願います。 例えば次の5個のファイルと、その中身が Txt1.txt 中身:12 34 Txt2.txt 中身:56 78 Txt3.txt 中身:90 12 Txt4.txt 中身:34 56 Txt5.txt 中身:78 90 となっていたとき、それぞれの中身の足し算を 12+34=46 56+78=134 ... となるように、ファイル単位で連続して行うにはどうすればいいでしょうか? (ファイルの個数だけインスタンスを発生させるという考え方でいいので しょうか?)
>>591 なんのインスタンスを発生?させるつもりだ
インスタンスは発生するもんじゃないし。
593 :
デフォルトの名無しさん :04/09/05 07:25
>>593 そんなに揚げ足とるなよ
生成と書きたかったんだろ
>>592 それでいいけど、Javaでやる意味がないんじゃない?
なんかのスクリプト使えば?
たとえば、awkならこんな感じ
#!/usr/bin/awk
{print $1 "+" $2 "=" $1 + $2}
使い方は
awk -f add.awk Txt*.txt
594 :
デフォルトの名無しさん :04/09/05 08:53
>>593 揚げ足というか・・・ケアレスミスじゃないだろ、明らかに。
どうみても、インスタンスあたりの理解不足だ。
勝手にファイル数分繰り返せっちゅうねん。
>>594 そうなのです、その書式だとExceptionが・・。
どなたか、RMIでcodebase指定をftpでやった人いません?
やっぱanonymousでしょうか。。
正規の表現では「インスタンスの生成」ですね。失礼しました。
>>593 スクリプトて「シェル・スクリプト」のスクリプト?聞いたことはあります。
ところで「awk」って何ですか? Googleで調べる際には「スクリプト awk」
十分ですか?
僕が理解できる範囲のものであれば、awkとやらでやってみます。
でもやっぱ、Javaで収まるならそうしたい。
>>597 つうか、キーワードわかってるなら調べろよ、と。
ていうか、勝手にファイル数分繰り返せと。
600 :
デフォルトの名無しさん :04/09/05 12:31
>>597 別にawkを使えっていってるわけじゃないよ
perlでもrubyでもすきなもんを使えばいいけど
例えばperlなら
#!/usr/bin/perl
while(<>) { ($x, $y) = split; printf "%s+%s=%s¥n", $x, $y, $x+$y; }
って感じでスクリプト系だとお手軽でしょ
決まった形式のデータを足し算したいだけならこれで十分かなという話
>>591 import java.io.*;
public class ReadAndCalc {
public static void main(String[] args) throws IOException {
for (int i = 1; i <= 5; i++) {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("txt" + i + ".txt"), "utf-8"));
try {
String[] array = in.readLine().split("\\s+");
System.out.println(Integer.parseInt(array[0]) + Integer.parseInt(array[1]));
} finally {
in.close();
}
}
}
}
String[] array; try { System.out.println(Integer.parseInt((array = in.readLine().split("\\s+"))[0]) + Integer.parseInt(array[1])); } finally { in.close(); } 行数は変わらんな
try { String[] array; System.out.println(Integer.parseInt((array = in.readLine().split("\\s+"))[0]) + Integer.parseInt(array[1])); } finally { in.close(); } 今日暇なんだよ
604 :
デフォルトの名無しさん :04/09/05 12:48
>>601 try節不要だからとっぱらっていいよ
607 :
デフォルトの名無しさん :04/09/05 15:26
>>598 > でもやっぱ、Javaで収まるならそうしたい。
Javaでawk, PerlやRubyと同じことをしたければ
Jakarta OROを使うことをおすすめしまする。
>>605 try節内で強制終了を起こすような事態もおこりえないのに
try-finallyをやっているからいらんということで。
try-catchが本当に必要かどうかはEclipseとかを
使って調べることをお勧めする。
Eclipse3.0の設定でどういうときに警告を出すかを簡単に設定できるので
それを使ってtry-catchが必要かどうかを判断できる。
必要がなければそこに黄色い波線が現れる。
到達不可能な例外、起こらない例外などを警告してくれる。
>>607 標準のじゃだめなんか?
それに、勧めるならGroovyの方が。
>>608 例外が発生しないからといって、try節ごと取り除いて処理を省いてもいいものか。
611 :
デフォルトの名無しさん :04/09/05 15:52
>>608 そうじゃなくて元のプログラムが
throws IOExceptionを定義してるから
いらないだけ
>>565 またもや仰られた事への理解に時間がかかりました。関心させられるばっかりで、奥が深い。
教えるのうまいね夢中で調べちゃったよ、全てをObjectとして表現でるぜjavaすげー、考え方が広くなった、ありがとう
俺java厨してる?危険?
java.langパッケージってすごい洗練されてんですね。興味がとまんねーのでここから出直してきます。
>>608 BufferedReader#readLine()でIOException起こるよ。
あとRuntimeExceptionも。
throws IOExceptionを外しましょう、と
外したら自分で例外処理かかなきゃなんねーべ
あほか、finallyは要るだろうが。
>>601 のtryブロックが何のためにあるのかも理解してないな。
こういうやつが例外セーフでないコードを書くわけだな。
finallyは例外処理とはいいません。でも必須
600, 601, 602, 603, 604, 605, 606, 607, 608 609, 610, 611, 613, 615 さん有難うございました。 (人名重複の際はご容赦下さい) 無事、希望通りの計算結果が出ました。ただし、当方はJava2(SE)1.3を 使用していますので、split()は使えず、代わりにnextToken()を使いました。 なお、try-finally は付けたままにしておきました。 重ねて御礼申し上げます。
| ____.____ | | | | | | | ∧_∧ | | | |( ´∀`)つ ミ | | |/ ⊃ ノ | | 1.3  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | |
Javaって例外が発生したら問題がおこるプログラム書くのが普通なのか? throwsあるからtry自体要らないって発想が危ないと思うが。 throwsあるからcatchは要らないならまあまだ分かるが。
622 :
デフォルトの名無しさん :04/09/05 18:11
スコープ内で開いたファイルディスクリプタは スコープ抜けたら自動的に解放されますが?
>>621 ってか、こんな使い捨てプログラムで例外発生しても、問題なんか起こらない。
スコープ抜けるが参照がなくなるの意味ならいつかはね。
>>622 この場合のスコープとはなんですか?
この場合のファイルディスクリプタとはなんですか?
>>621 使い捨てじゃないプログラムを書いたときに改めて問題になるだけ。
こんなやつは腐るほどいる。
ここまでの流れで、使い捨てだから問題ないという理解に見えたか?
俺には使い捨てだろうが重要なプログラムだろうが関わりなく「不要だ」にみえたが…
>>626 > 使い捨てだろうが重要なプログラムだろうが関わりなく「不要だ」にみえたが…
極端なやつだ。
誰かまとめろよ
629 :
デフォルトの名無しさん :04/09/05 18:42
ようするに、使い捨てだろうが何だろうが全力投球のコードを書けということだな おまえのいうことはわかったよ 俺は使い分けるけどな
>>628 例外処理は、作るものの性質によって使い分け。
以上。
ちげーよ。
使い捨てだったらそんな処理要らんて書くんなら、
ちゃんと「使い捨てだから不要なんだ」ってことが分かるようにかけよってこった。
誰が常に全てを考慮せにゃならんて書いた?
>>627 これに関しちゃ、
>>621 の言ってる内容についてじゃなくて、
これまでの
>>604-611 辺りの話について書いてるんだよ。
どう読んだって、「今回は使い捨てだから気にしなくていい」って話じゃないだろ。
どう考えても、一般的な話としてこのコードならtryは不要だって書いてるだろ。
これを読んだやつがどう理解するかといえば、
throwsで列挙してる例外はcatchしなくていいからtryは不要だってなってしまうんだよ。
同意
633 :
デフォルトの名無しさん :04/09/05 19:07
リフレクションを使い、Class型のオブジェクトから public static finalで宣言されているフィールドの値を とってくることはできないでしょうか? Class cl=getClass(); Field publicField=cl.getField(PUBLIC_STATIC_FINAL_FIELD_NAME); String str=(String)publicField.get(cl.newInstance()); のようにnewInstanceを使えばもちろんとってこれるのですが staticなフィールドはインスタンスを生成しなくてもとってこれる フィールドなので、何か腑に落ちません。 newInstanceを使わないでとってくる方法はないのでしょうか?
633ですが633の質問にちょっと関連した質問を・・。
実は、633は
ServletのFilterでリクエストされているサーブレットの
特定の名前で宣言されている
public static finalなフィールドの値を読み
その値によって動作を振り分けるというようなことをしているのですが
この、そもそもリクエストされているサーブレットのClassを特定し
Class型のオブジェクトを生成するところもちょっと苦労しています。。
現在はConstantクラスで
/** Servletマッピングパス */
public static final String SERVLET_MAPPING_PATH = "/servlet/";
と宣言しfilterクラスで
Class cl = Class.forName(request.getServletPath().replaceFirst(Constant.SERVLET_MAPPING_PATH, ""));
とし、
http://DOMAIN/CONTEXT-PATH/servlet/foo.bar.Baz といったurlでfoo.bar.Bazをとりだす。。。といったことをしています。
これだと、マッピングが完全修飾クラス名であることが制限となってしまい
やはり腑におちません。
いろいろ調べたのですが完全修飾クラス名そのものずばりを取得する方法が見つかりません。。。
デバッグでしらべるとdoFilterでわたされるFilterChainの中の
servlet.servletClassに格納されているようですが・・・それを取り出す手段。。。ってことになるとおもうのですが。。
解決策ご存知の方ご教授ください
>>635 あ・・・!そうか!
nullを渡したところできました。
ありがとうございます。
>そんなもん処理による。 んなこた分かっとるって何度言ったら…
>>638 すいません。。(汗
こういうのはやはり外部ファイルに書き出す、、、とかでしょうか。
641 :
デフォルトの名無しさん :04/09/05 19:36
ウフフ
643 :
デフォルトの名無しさん :04/09/05 19:40
>>640 URLとサーブレットのマッピングはweb.xmlでやれるだろ?
なんでそんなことやってんの?
>>643 >>633 をやりたいからなんですね。。
もっとぶっちゃけていってしまうと
対象のサーブレットには
使用するフォームビーンクラスが宣言されていたりします。。
(ここも「その設計なんとかしろ」といわれそうだ・・・)
public static final Class FORM_CLASS = FormSearch.class;
みたいな。。で、これをとってきて
filterでフォームビーンを構成して。。みたいなことをしてます。
strutsだと既に用意されているようなことだとおもうのですが
(strutsは使ったこと無いので詳しくはしらないのですが)
strutsを使えない事情もありまして。。。
strutsだとstruts-configとかで設定するんでしたね、、
そうしろってことかなぁ。。。
645 :
デフォルトの名無しさん :04/09/05 19:53
>>644 Strutsは違うよ
Strutsの場合は単一のServletで受けてから振り分けてる
そうした方が楽だよ
リフレクションのことは忘れて一から設計しなおせ
>>645-646 自分もそうしたいのは山々なんですが・・。
実はこのプロジェクトには後から入りまして、、
ソースを見て「なんじゃこりゃー」と叫んでしまいました。
フレームワーク的な考えは一切なく各々のコーダーが
各々のやり方でコーディングしていてValidationなんかもしてなかったのです、、、
struts導入を提案しましたがあえなく却下され
(これは私の知識と経験不足のせいですね)
自分は今のソースになるたけ影響を与えずにフレームワーク的なものを
導入することを許されたのみでした。。。
幸運なことにFilterには手を付けていなかったようなので
そこを拠点になんとかいろいろやろうと奮闘しているという状況だったりします。
自分自身もJavaは2ヶ月程度の経験なのでどこまでやれるかわかりませんが。。
648 :
デフォルトの名無しさん :04/09/05 20:03
>>647 サーブレットからサーブレット呼ぶのは簡単だよ
ひらめいた?
大変なのはわかったが混乱に拍車をかけようとしているように思える。 まぁ頑張れ
>>648 RequestDispatcher経由で取れるかな・・と
言われて今調べましたが。。。
うーんそれっぽいメソッドは無いですね。。。
includeしちゃう、、とか。。?
651 :
デフォルトの名無しさん :04/09/05 20:20
リフレクションから離れろって、、、、
652 :
デフォルトの名無しさん :04/09/05 20:24
そもそも自分でサーブレット作ってもServletContextはどうすんの? コンテナ管理されてるものに手を出しちゃダメだよ
>>619 2chでいちいち面倒くさそうなお礼レスを返すとは
お前も暇人やなー。
フィードバックだけしときゃええってのによ
>>621 藻前は例外の極意がまだわかってない。
例外でテクニックを検索せよ。
Javaの鉄則、格言、とかの本嫁
655 :
デフォルトの名無しさん :04/09/05 22:07
>>631 そもそもmain()上で動かす時点で例外処理はいい加減でも構わない。
Servlet, JSPにしてもブラウザに表示する部分で
下手にcatchしてprintStackTrace()されても
お客さんに「なんだこれは!? Tomcatのログに何かエラーメッセージがでているぞ! 早急に直してくれ!」
といわれるのがオチ。下手にthrowsとかthrow new とかするとそれをどうにかしろと言われ徹夜が続く。
顧客の為にif文とかを使ってcatch節のなかでわざとreturnするとか、わざとcatch節を空にするということはよくある。
とくに、
そのクラス事態がJSPにforward/redirect転送せずその場でブラウザに出力するServletやJSPや
main()メソッドのように外部から参照され依存されることがないときは
ユーザインターフェース部分は仕方が無くそうするケースがある。
さすがに内部のロジック、依存元クラス、フレームワーク、ライブラリ、Modelの開発ではそういう酷いことはしないが。
JSPの画面遷移で、入力フォームをセッションやパラメータで渡すときはちゃんとcatch節に
エラー、例外、ログ情報をため込んでセッションに入れておくが。
656 :
デフォルトの名無しさん :04/09/05 22:07
「独習java」の最初の例題をコマンドプロンプトを通じてしようとしたのですが、 j2sdkのbinのサブディレクトリのパスの通し方を忘れました 親切な方教えてください
657 :
デフォルトの名無しさん :04/09/05 22:13
>>636 > 633ですが633の質問にちょっと関連した質問を・・。
> 実は、633は
> ServletのFilterでリクエストされているサーブレットの
> 特定の名前で宣言されている
> public static finalなフィールドの値を読み
> その値によって動作を振り分けるというようなことをしているのですが
> この、そもそもリクエストされているサーブレットのClassを特定し
> Class型のオブジェクトを生成するところもちょっと苦労しています。。
> 現在はConstantクラスで
> /** Servletマッピングパス */
> public static final String SERVLET_MAPPING_PATH = "/servlet/";
> と宣言しfilterクラスで
> Class cl = Class.forName(request.getServletPath().replaceFirst(Constant.SERVLET_MAPPING_PATH, ""));
ここでgetServletPath()とするところがあれだな。
URLを取り出したければ
request.getContextPath()を使うだろ普通。
getServletPath()ではサーバ上の絶対パスを拾ってしまいドメインがとれんぞ。
getContectPath()を使えばいちいちString#replaceFirst()つかう必要もなくなるぞ。
>>650 >
>>648 > RequestDispatcher経由で取れるかな・・と
> 言われて今調べましたが。。。
> うーんそれっぽいメソッドは無いですね。。。
> includeしちゃう、、とか。。?
おい、forward()はどうした。
sendRedirect()でもいいが、パラメータ渡せないな。
getURL()とかなかった?
>>633 がやりたいことは
ただのリンク張りか?
だったら
request.getContextPath() + / + web.xmlで指定したディレクトリ名とか + サーブレット名
で十分。ドメインなんていらない
あとはweb.xmlをどうするか。
662 :
takka :04/09/05 22:21
はじめまして。質問させていただきます。 ウィンドウ操作中にエラーメッセージボックスを表示させます。 エラーメッセージボックスはモーダルダイアログとします。 エラーメッセージボックス表示中、ウィンドウにマウスカーソルを 当てると、マウスカーソルが待ち状態(砂時計)表示になるとします。 でも、Windowsの場合はマウスカーソルが待ち状態(砂時計)表示になりませんでした。 HPやSolarisといったUNIXではマウスカーソルが待ち状態(砂時計)表示になります。 なぜでしょうか。 OSの仕様なのでしょうか。
>>644 なんでgetClass()を使うんだか。getName()にすればええんでは。
あとはjava.lang.reflectを使って(ry
664 :
デフォルトの名無しさん :04/09/05 22:21
>>662 ロギングAPIかJakarta Log4j, AspectJでログを取れ。
>>658 ,661
いや、、、
最終的には単に
chain.doFilter
しちゃうのです。
そのまえにFormBeanのクラスをとってきて
FormBeanをリクエストのパラメータから自動構成して
(ここでValidationもやっちゃうValidationがNGだったら共通入力エラーjspにforwardする)
setAttributeで構成されたFormBeanオブジェクトをセットして
サーブレットではそれをとりだすだけ。。ってなことをやりたいのです。。
>>665 >
>>658 ,661
> いや、、、
> 最終的には単に
> chain.doFilter
> しちゃうのです。
全然pathとか関係ない話じゃないか
668 :
デフォルトの名無しさん :04/09/05 22:32
669 :
デフォルトの名無しさん :04/09/05 22:37
Javaの例外はSleep(30000)の代わりに使える。
勉強になりますた。
JavaをWindowsの実行ファイルにする、フリーソフトありませんか
jet gjc
jetってすげー高ぇ〜・・・ こんなの買うならJBuilder買った方が(ry
674 :
デフォルトの名無しさん :04/09/05 23:58
>>671 run.batというファイルを用意し、
テキストエディタにこう記述する
java クラス名
はいこれでダブルクリックするだけでできあがり
675 :
デフォルトの名無しさん :04/09/05 23:59
>>671 jarで圧縮するときマニフェストファイルを含め
ブートストラップクラスを記述し
拡張子exeで圧縮する。
これでWindows実行ファイルに早変わり。
ダブルクリックするだけで実行できます
ファイルからの読み込みで、読み込むテキストには"|"でくぎってあり数字や文字列が書いてまります。 それらを抜き出して新しいテキストファイルをつくりたいんですが String tokenizerをつかってnextTokensでそれぞれを取り出した時、 取り出した数字や文字列に配列みたいに変数名で順番に番号をふることはできますか?
678 :
デフォルトの名無しさん :04/09/06 00:52
いつもabstractがどうたらこうたらというので悩まされています。 ググったり本で調べたりすると「抽象メソッドを持つクラス」「そのクラスの中で実装していないクラス」とありますが どういう事か意味不明です。 今、以下のようなクラスを作り、main関数がある別のクラスでインスタンス化して使おうとしたんですが abstractとして宣言しろと言われてしまいます。 (import文省略) public class Player{ public Player(){ Toolkit toolkit = Toolkit.getDefaultToolkit(); Image image = toolkit.getImage("char.gif"); } } 何故これが「abstractとして宣言する必要がある」のか教えてください。
クラスファイルを完全修飾クラス名からInputStreamもしくはバイト配列で 読み出す方法はありませんか?
Class#getResourceAsStream(String) なんでこんなにReflectionが流行ってるんだ?
681 :
デフォルトの名無しさん :04/09/06 01:36
>>678 Playerにはimplementsで何か指定してない?
682 :
デフォルトの名無しさん :04/09/06 01:48
>>681 Runnableを指定してました・・・・
しかし、これが絶対必要なんです。
なんとかなりませんか?
というか何故implementsがあるとダメなんですか?
…
implements Runnableしたということは、自分か自分のサブクラスで Runnableで宣言してあるメソッド(public void run())を実装するよ、 と表明しているのと同義。それをしてない以上怒られて当たり前。 ここまで説明させて「なんで?」なんて聞くなよ?
685 :
デフォルトの名無しさん :04/09/06 02:11
>>684 わかりやすい回答をありがとうございました。
runは後で作ればいいやと思ってたのが間違いだった・・・orz
JVMを開始してからの経過時間を取得したいのですが、 どうすればよいのでしょうか? 開始時のcurrentTimeを保持しておいて、取得したい時の currentTimeとの差を求めるしかないのでしょうか。
それのなにがいやなのか・・・
>>675 拡張子exeで圧縮ってどういうことでしょう?
>>689 JSmoothというのもあるので、試してみると面白いかも。目に付く機能は以下のとおり。
・JVMの自動検出(Sun JVM、MSJVM、ソフト組み込みなどから選択可能)
・JVMが見つからなかった時に、ブラウザで指定したURLを開く機能
これでJava Pluginのダウンロードサイトを指定すればJVMのインストールが簡単になるはず。
ライセンスがGPLだけど、このソフトで作った実行ファイルはGPLの対象にならないのもうれしい。
692 :
デフォルトの名無しさん :04/09/06 13:15
javaでファイル検索プログラムを作りたいのですが、 引数1で調べるディレクトリの指定、 引数2でファイル名やワイルドカード等の検索キーの指定をしたいのですが、 今は正規表現(Matcher&Ptternクラス)を使ってやっているため、 例えば全てのファイル検索なら.*と指定しなければなりません。 WINDOWSのエクスプローラのような検索指定、 *.*なら全てのファイル&フォルダを検索(自分のプログラムでは、*.*だとエラー) *.javaなら拡張子がjavaの全てのファイル&フォルダを検索、 testならファイル名にtestが入っているファイル&フォルダを検索というようにしたいです。 このような引数指定をできるようにするには、どうしたらいいのでしょうか?
693 :
デフォルトの名無しさん :04/09/06 13:39
>>689 なぜexeにする必要があるのか?
JavaWebStartを使うか、マニフェストファイルに記述してダブルクリックするだけの
起動にどんな不満があるのか?
694 :
デフォルトの名無しさん :04/09/06 13:40
>>692 Javaでファイル検索するなら、Jakarta Luceneがおすすめ
javaでオブジェクト指向を学びたいんですが、 class設計やアクセス制御などをある使う必要がってあまり難しくない程度のw 「課題」を出してもらいたいです。 よろしくお願いします。
>>692 JakartaのOROに、glob(*.javaとかのパターン)をPerl5正規表現に変換する奴があります。
(*.*を全ファイルと解釈するって、ピリオドを含まないファイルはどうなるんだろう?)
697 :
デフォルトの名無しさん :04/09/06 14:19
>>694 出たな!!! ジャカルタ厨!!!
ジャカルタコモンスもいいが、あればかり使うと・・・
>>693 上に挙がってたサイトに各手法の考察が載っているが、それが不満にならない?
ttp://wiredstyle.net/documents/launch_java_app/ 正直ちょっと古いかおかしいとは思うけど。
Active-XとJavaPlugin使えばJREは自動的に最新になるんだし、
JWSの別途インストールなんて問題にならない。
サーバの設定云々も実は不要だったりする。
何が何でも「exeくれくれ」には正直辟易するけど、
実行可能JarやJavaWebStartが、問題のまるでない完璧な解な訳ではないので
そんなに目の敵にしなくてもいいと思う。
>>689-690 で示したような個性的な機能を持ったランチャー作成ツールもあるんだし、
exeにする利点は大いにある。
まあ、理由が「Javaは遅いらしいのでWindowsネイティブアプリにしたい」とかだったら
あなた同様私もげんなりするわけですが。
antしか使ってないのにJakarta厨言われてもorz (つーか、antはもうJakartaですらないな) 前に使ったことがあるから知ってただけだよぅ
>>694 それはファイルの内容での検索だと思われ。
>>690 ソフト紹介ありがd。
漏れも今まで実行可能jarで配布してたんだけどなんかjarのダブルクリックって違和感がある・・・
JWSってのは使い方知らなかったけど面白そうなので今度調べてみます。
そういえばeclipseもjavaで作られてるって聞いてるけど、インストーラー付のexeもjavaプログラムでできるのかな。
エクリプスのexeって、プラグ印を全部クラスパス指定してなんか起動するだけじゃないの?
>>695 現在、クラスは設計するものではなく、存在を調べて使用法を学ぶ
ものなのです。
ちょっと気になったので質問させてください。 JAVAのSwingはJAVAが持ってる独自UIですよね。 それじゃ、UNIXなどでXが入ってないPCでも、 Swing使ったJAVAアプリを立ち上げると、 それはGUIが立ち上がるんでしょうか?
ありえないと思うけどなぜだろう
>>705 グラフィックカードの管理の機能はない。
708 :
デフォルトの名無しさん :04/09/06 16:12
guiguiたちあがるよ
>>705 KDEもGTKも独自UIだが、Xが入っていないと使えない。
誰かJavaでディグダグつくってくれませんか 自分では作れなかったので 敵が高速でよってくるスピードを少し遅くしたものを お願いします。
KDEじゃねぇや、qtだった。
Velocity anakia で質問なんですが・・・ Windows上で XML(UTF-8) -> VSL(UTF-8) -> と処理しようとすると 文字化けして、 ???? ってなってしまうんですが、これって velocity.properties で対応するしかないんでしょうか?
714 :
デフォルトの名無しさん :04/09/06 16:42
はじめまして、JAVAプログラマーの見習いをやっています。 見習といっても、何ができるでもなく つい1週間ほど前に会社からプログラマ転向の命令が下りました。 現在は教本を使い(スタートアップJava 技術評論社) 本の通りにプログラムを作ってみたりしていまして 一応、空のウインドウを作るところから初めて 多少本を見ながらですが、if文、for文までは使えるようになりました。 ですが、いまいちしっくり来ません。 なんというか、メモ帳にタイピングの練習をしてるような?気分なのです。 とりあえず、Javaと言うものの概念(クラスやオブジェクト指向)は なんとなしに解ったのですが、肝心のプログラム自身を 何を作ったらいいのか、どう練習や勉強をしたらいいのか解りません。 先輩の方々はどういう勉強法をされましたか? またどんなプログラムを作って勉強されていましたか? 馬鹿げた質問かもしれませんが 会社からは「独学で覚えろ」としか言われてませんので 本当に解らないのです;; よろしくお願いいたします。
>>714 まずは自分では作らず、人のプログラムをいじることから始める
>>714 まず、自分がほしいと思うようなソフトを思い浮かべる。
難しいのは避けて、こういうのあったらちょっと便利〜と思える物。
それを作るために、どういう処理が必要なのか。
どういう事を覚えないといけないのか。
それらを目標に勉強してみては?
もしくは、サンプルとかで載ってる簡単なツールのソースを参考に、
そこから自分の気に入るように改良したりするのも勉強になるし。
717 :
デフォルトの名無しさん :04/09/06 19:45
質問させてください。 JAVAから外部プログラム(UNIXのシェル)を実行して、 その外部プログラムが終了する(戻り値を得る)までJAVA側は待機する にはどうしたらよいのでしょうか?
↑ 言い忘れました。外部プログラムはCOBOLです。
CORBAでも使うとか。
CORBAですか! 標準のJ2EE APIだけじゃ到底無理なんですか?
>>717 java.util.Process#waitFor
java.util.Process#exitValue
まちがえた。java.langだからなんもせんで使える。
>>722 おお!
これならなんかできそうですね!
いや、まだ設計段階なんで、試すことはできませんが、
「できるかどうか」だけ知りたかったんです。
ありがとうございました!
マップチップを使ったタイリング表示を上手く行きませんどこかコードの記述が間違っているのでしょうか? 二次元配列の要素数をランダムで入れたときは表示されるのですがコメントで消してある二次元配列の方を使うと、まったく表示してくれません どの辺が間違っているのか助言の方をお願いしたいです。 img = new Image[2]; img[0] = getImage(getDocumentBase(),"map1.gif"); img[1] = getImage(getDocumentBase(),"map2.gif"); /* int map[][] ={ {1,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,1}}; */ map = new int[10][10]; for (int y=0; y<10; y++){ for (int x=0; x<10; x++){ map[x][y] = (int) (2 * Math.random()); }}} public void paint(Graphics g){ int no; for(int my=0;my<10;my++){ for(int mx=0;mx<10;mx++){ no = map[my][mx]; g.drawImage(img[no], 32*mx,32*my,this);
725 :
デフォルトの名無しさん :04/09/06 21:12
っていうか書いても10行くらいだろ なんで試せないの?
726 :
デフォルトの名無しさん :04/09/06 21:41
>>724 その2次元配列を同描画しようとしたの?
>>712 結局、自分のやりたいことはVelocityのバグに阻まれているらしかったのでパッチを作った。
取り込まれるかわからんけど、VelocityのBugzillaに登録しておいた。
728 :
デフォルトの名無しさん :04/09/06 21:43
>>724 ていうかjava.awt.image.MemoryImageSourceのjavadoc見れ
サンプルコード付きで使い方説明してあるよ
>>724 map[][] の スコープがわからんのやけど、
それはちゃんと paintメソッドで参照できる場所にある?
スンマセン何を作っているか書いてませんでした
JAVAアプレットでミニゲームを作っているのです、そこでファミコンとかで
あったロードランナーとかブロック単位でマップを表示するってのをやりたくて・・・
>>725 何度もコンパイルして実行しているのですが・・・
>>726 ゲームで使うマップを描画しようとしてまして、0、が空間で1がブロックって感じで
>>728 ありがとうございます、早速みて見ます!
こんな質問に反応してくださってどうもです、未熟者の上爪垢も溜まっておりますので
731 :
デフォルトの名無しさん :04/09/06 22:24
もし A a = new B(); ならA型の変数aにB型のオブジェクトを入れるという意味でいいんですか? 継承のところでスーパークラスはサブクラスのオブジェクトを参照できる ってところで混乱しているんですが・・・
732 :
デフォルトの名無しさん :04/09/06 22:31
初心者の質問で失礼ですが、どうしても迷子になってしまったのでこちらに来ました "HelloWorld" のプログラムで、コンパイルはできるのですが、実行ができません 環境変数の設定でCLASSPATHの設定がおかしいとのことですが、 「コントロールパネル」→「システム」→「システム環境変数の設定」で パスの設定の仕方がわかりません ピリオドを入れればいいという話ですが、、、 ちなみに現在の設定値は C:\WINDOWS\System32\QTJava.zip です。 既出のものかもしれませんが、よろしくお願いします
import java.applet.*; import java.awt.*; public class for2 extends Applet { Image img[]; int map[][]; public void init(){ img = new Image[2]; img[0] = getImage(getDocumentBase(),"map1.gif"); img[1] = getImage(getDocumentBase(),"map2.gif"); /* int map[][] ={{1,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,1}};*/ map = new int[5][5]; for (int y=0; y<5; y++){ for (int x=0; x<5; x++){ map[x][y] = (int) (2 * Math.random()); }}} public void paint(Graphics g){ int no; for(int my=0;my<5;my++){ for(int mx=0;mx<5;mx++){ no = map[my][mx]; g.drawImage(img[no], 32*mx,32*my,this); }}}}
734 :
デフォルトの名無しさん :04/09/06 22:35
>>731 何の本呼んでるか知らないけれどその本捨てた方がいいよ
>>729 733みたいな感じでコードを書いたのですが、どこか間違えているのでしょうか?
ネットや本等で何度みてもまったく同じに模写したのですが・・・・
ランダムじゃなく、自分で二次元配列に要素数を入れた方を画面に出力させようと
すると駄目なんです
736 :
デフォルトの名無しさん :04/09/06 22:40
>732 ・ファイル名がクラス名といっしょになっているか見る ・package指定をしていないならCLASSPATHはとりあえずいらない ・javaコマンドを実行するとき、ちゃんとそのディレクトリに移動して実行する
>>735 配列変数のそういう初期化の仕方って、
宣言時しかできないんじゃなかったっけ?
int map[][] って宣言した場所でしないと駄目じゃない?
>>737 パッケージ指定とCLASSPATH指定は関係ないでしょう。
まぁ、
>>732 だけの情報で何かいうほうが難しいが。
740 :
デフォルトの名無しさん :04/09/06 22:57
>>735 mapがインスタンス変数とローカル変数で定義されてるから、
ローカル変数が優先されてインスタンス変数は初期化されていない
741 :
デフォルトの名無しさん :04/09/06 22:59
>>732 java -classpath . HelloWorld
または
set classpath=.
したあと
java HelloWorld
742 :
デフォルトの名無しさん :04/09/06 23:00
プロファイリング機能がJ2SE5.0 では以前と比べて速くなったようですが、 正確な秒数で機能を比較することってどうやってやればいいのでしょうか? お願いします
743 :
デフォルトの名無しさん :04/09/06 23:06
>>731 A a = new B();
が可能なのは、以下の二つの場合
1.BがAのサブクラスである
2.Aはインタフェースで、BがAを実装している
このようにすることで、BのインスタンスをAとして扱うわけだが
Aから継承したメソッドは使えるが、B固有のメソッドは使えなくなる。
こんな馬鹿なことは通常しないので、こんな例を載せるのは糞本。
初心者本じゃなくてアイディア本だったらありかもな。 上手く使えば使える手だし。
>>740 出来ました!やはり配列の宣言と代入を違う場所で行っていたのが
悪かったようです、この為にグーグルのリンクの表示文字がどれだけ紫に変わったことか・・・
ありがとうございました。
これで安心して爪垢掃除が出来ます。
>>743 初心者向けのコードとしてはたしかにそうかもしれないが
インターフェースプログラミングとか考えれば糞ってこたぁないでしょう
List list = new Vector();
とかふつーにするでしょ?
747 :
デフォルトの名無しさん :04/09/06 23:57
>>746 俺ならまずしないね
内部で使うのにインタフェースで扱ってどうするのさ
インタフェースってのは対外部向け
たとえばファクトリとかね
X image = XFactory.createX();
public X createX() { return new XImpl(); }
あとはインスタンス変数などで、インタフェースを通して変更がかかる奴
private List list;
public setList(List list) {this.list = list; }
内部で閉じてる変数は、インタフェースで受ける意味ないよ
>>743 は、例の釣り師。
先月やたら出没して、最近ようやくおとなしくなったと思ったら
また登場しだすとは。。。
夏休みはもう終わったんだぞ。2学期が始まったのなら2ちゃんで
釣ってないで勉強しる!
749 :
デフォルトの名無しさん :04/09/07 00:04
>>748 違うよばか
インタフェース、日本語訳は界面
外界と内部を分けるための手段だよ
>>747 ああ、独りで作ってる限りはそれでもかまわないよ。
>>748 ああ、そうかそうか
つられた俺が悪かった
753 :
デフォルトの名無しさん :04/09/07 00:10
>>747 「実行レベル」だけを考えればそうだが、コーディングレベルってのが
あるでしょ。
754 :
デフォルトの名無しさん :04/09/07 00:13
>>752 おまいら、何のために実装クラス作ってんの?
インタフェースで受けたら、protectedメソッドも
privateメソッドも呼べないんだぜ?
publicメソッドだけで内部処理のプログラミングしてんのか。
755 :
デフォルトの名無しさん :04/09/07 00:14
確実に釣りだな。 問題は真面目に質問してる初心者に釣りネタを吹き込むなって事だ。
>>754 意味不明
使用するために必要十分な機能をもつインターフェイスや基底クラスなら
なんらこまらんだろうが。
だいたい、誰も常に実装クラス型を使用しないなんていってない。
>privateメソッドも呼べないんだぜ
あほか、privateメソッド呼ばにゃならん場面でするわけなかろーが。
つうか、いつの間にかprotectedとかprivateとかが絡んでくるような
「内部処理」とやらの話に変わってるな。
すんません、Servletのことで質問したいのですが とあるサイトからのみドメインでアクセスを 規制させたいのですが、飛んできたページのドメインを取得 するにはどうすればいいのでしょうか? 一応それっぽいのではRequestクラスのgetHeaderからrefereかなんかで URL丸ごとは取れるっぽいのですが・・・ドメインのみってのは無理でしょうか
758 :
デフォルトの名無しさん :04/09/07 00:39
Refererからドメインを取得すればよいのでは・・・
>>757 Servlet使うならHTTPの基礎ぐらい勉強してください
>>757 URLって書式決まってんだから取れるでしょそれくらい。
java.net.URL のAPI の説明を見るとヒントがかかれている。
>>743 Iterator i = new ArrayList().iterator();
などというのもバカなことなのですね。
write()を使ったファイルへの複数行の書き込み方が分かりません。 例えばfor文で 1+2+3+・・・+10=55(式:m=m+1) 2*2*2*・・・*2=1024(式:n=n*2) が得られているとき、write()でこれらをファイルに改行の形で書き込むため、 ファイルのオブジェクトをfileを用い、 file.write(m + "\n" +n) ではヘンテコな書き込みになってしまいます。 どないしましょう?
763 :
デフォルトの名無しさん :04/09/07 06:38
>>762 FileOutputStream fs = new FileOutputStream("aaa.txt");
PrintStream out = new PrintStream(new BufferedOutputStream(fs));
out.println(m + "¥n" + n);
out.close();
閑話休題:日本とアメリカには借金時計のHPがあるらしい。 (核の時計をもじったもの) TVで見たが、なんか高速のアクセスカウンターを見ているようだった。 興味がある人は勝手に検索してくれ。
まずは閑話休題の使い方をマスターしたまえ。
>>695 結城浩の「Java言語で学ぶデザインパターン入門」を嫁
767 :
デフォルトの名無しさん :04/09/07 10:26
>>697 >
>>694 > 出たな!!! ジャカルタ厨!!!
> ジャカルタコモンスもいいが、あればかり使うと・・・
あればかり使うと? 何だって?
説明よろ
768 :
デフォルトの名無しさん :04/09/07 10:47
>>764 > 閑話休題:日本とアメリカには借金時計のHPがあるらしい。
> (核の時計をもじったもの)
JavaScriptでonLoadしているだけか。
それではリアルタイム性に欠けるではないか。
お主がJavaAppletかJavaWebStartで作り直せ
769 :
デフォルトの名無しさん :04/09/07 11:03
>>698 >
>>693 > 上に挙がってたサイトに各手法の考察が載っているが、それが不満にならない?
>
ttp://wiredstyle.net/documents/launch_java_app/ > 正直ちょっと古いかおかしいとは思うけど。
ほんとにめちゃくちゃなこといってる。
Javaで開発したアプリケーションを配布する場合、 「どのようにしてユーザーにアプリケーション
を起動させるか」といった問題があります。 Javaで作られたプログラム(CLASSファイル)は、基
本的にはコンソールから実行する必要があるので、 EXEファイルのようにダブルクリックで簡単
に起動させることはできないからです。 コンソールからしか起動できないのでは、そのアプリケ
ーションを利用できるユーザーは限られてくるでしょう。
時代の流れに取り残された香具師が書いた説明ですな。JavaWebStartに関しても嘘八百ばかりならべてますなあ。
jarでも引数設定できるし。*BSDではちょい面倒でもWindows環境なら何もしなくても勝手にやってくれるので設定は激しく容易だし。
>>769 アイコン設定できないってのが問題よ
あとwebstartはsandbox内ということで根本的につかいかたが違う
開発者の目とユーザーの目はだいぶ違うということを覚えておくといい
アプリケーションはすべて個別のアイコンがあってデスクトップやスタートメニューに
ショートカットがあるもの・・・と認識している人は多いよ
どっちにしろラッピング程度なんだから目くじら立てることはないんじゃないの?
これを我慢できれば代替も可能・・・ってレベルで満足してくれるところならかまわんけどね
>>770 JavaWebStartなら、アイコン作ってデスクトップやスタートメニューにショートカット作ってくれるし。
>>771 肝心のsandboxってところ見落としてるぞ
eclipseってショートカットが作られたけど、Javaで出来てるんでしょ?
>>773 eclipseは、JVMを起動するexeファイルがある。
まぁ、こういう工夫をすればアイコンは問題なく設定できる。
そいや、引数でVMを動かす javaコマンドも指定できるし。
見た目にこだわるなら、こういう工夫をすればよいという例。
775 :
デフォルトの名無しさん :04/09/07 16:33
JavaプログラムからGnuPGを使用して暗号&復号を行いたいのですが、 復号時などでパスワード入力を求められる時、待ち状態になってしまい入力ができません。 具体的にはInputStreamのreadLine()メソッドで止まってしまい、 プロセスにパスワードが送れていないようなのです。 どなたかわかる方いらっしゃいますか? OS:FedoraCore1 JDK:1.4.2 gnupg-1.2.2-3使用 Runtime run = Runtime.getRuntime(); Process pro = run.exec("gpg -o /home/hoge/hoge.txt /home/hoge/hoge.asc"); PrintWriter pw = new PrintWriter(pro.getOutputStream(), true); pw.println("hogehoge"); pw.flush(); pw.close(); BufferedReader inBr = new BufferedReader(new InputStreamReader(in)); String line = ""; while ((line = inBr.readLine()) != null) { System.out.println("in : " + line); } BufferedReader erBr = new BufferedReader(new InputStreamReader(err)); line = ""; while ((line = erBr.readLine()) != null) { System.out.println("err : " + line); } inBr.close(); erBr.close();
>>775 readLineは改行が来ないと止まってしまう。
そこはreadLineを使わないようにする。
>>776 返信ありがとうございます。
readLineは使用せずに、readを使用してみましたが、結果は同じでした。
パスワードの入力待ち状態になってしまうようで、帰ってきません。
どうしたものか…
>>777 いやいや、そうではなく。
gnupg側がなんか表示してパスワード入力待ちになると思うんだが、その表示、たとえば「password:」が来たら読み込みを中止してこっちから書き込むようにする。
だから1文字ずつ読み込みつつ、目的とする文字列が来たかどうか判定するのよ。
>>778 残念な事にInputStreamを1文字でも読んだ時点でパスワードの入力待ちになってしまいます。
パスワードの入力部分は別プロセスなんでしょうか…
>>779 Outputのcloseが早すぎ。
flushだけにしておくがいい。
>>780 Outputのcloseを後半にしても動作は変わらずでした… orz
762です。 解決しました。763さん有難うございました。
質問させてください。 jdbc.odbc.JdbcOdbcDriver接続で MDBのデータをSelect文で抽出したいのですが、 Select * form Tabale like '%' みたいなことをしたいのですが、%でうまく検索できません。 エスケープシーケンスでやればいいんですよね? どのようにやるのかわからないので、教えてください。
>>783 select * from テーブル where カラム like '%キーワード%'
あ・・・ 普通にできました。。。 ''←で囲ってなかったせい? なんか3時間ぐらい潰した・・・
間違えた '%'←'で囲っていなかったせいかな? >> 784 レスありがとうございました。
>>772 jarsignerでしょめいすればsandboxを抜け出せるかと思ったけど
>>772 さんどぼくすも、アプレットのものほど厳しくないし。
駄目な質問例 その1 ◆ 名前、本文に「初心者」が入っている。 その2 ◆ 2度目以降の書き込みに通し番号が入っていない。 その3 ◆ 環境がなどが書かれていない、または小出しにしている。 その4 ◆ 質問が1行のみ。 その5 ◆ 質問文から要旨が汲み取りにくい。 その6 ◆ 検索という言葉を知らない。自分自身で調べる気が全く無い。 ※誠意のある質問には、誠意のこもったレスが返ってきます。 レスを頂いたら、同じ症状の方の為に結果報告、お礼のレスも忘れずに…。 みんなで助け合い、お互いのスキルUPを目指しましょう。 「初心者です」と前振りする奴の大半は ・自分で調べたくありません。 ・自分のパソコンの環境等は自分の頭が悪くさっぱりわからないので勘弁してください。 ・専門用語を使われても分かりません。調べません。 ・金も時間も手間もかける気は全くさらさらこれっぽっちもねーから全部教えろ屑ども。 ・問題が解決しても事後報告やお礼を述べるつもりはさらさらありません。 ・四の五のいわずさっさっと教えろ糞ボケ という意味であり、実質初心者以下の糞虫である。
790 :
デフォルトの名無しさん :04/09/08 13:08
JavaWebStartアプリはペタペタとコンポーネント貼るだけで完成しまつか?
791 :
デフォルトの名無しさん :04/09/08 15:05
vectorって文字列しか扱えないんでしょうか?
Javaにvectorなんかあったんだ。
Vectorが扱えるのはObject型 プリミティブ型は扱えない
>>775 です。解決しました。
GnuPGにバッチモードというオプションがあって、それを付けたら
>>775 のソースで動きました。
ありがとうございましたm(_ _)m
>>791 Vector でなく ArrayList をつかっとけ。
なんで初心者はVector使いたがるのかね
初心者ご用達のHPや本にVector使ってあるとか
ArrayListやHashMap使った改訂版出して欲しいやね
800 :
デフォルトの名無しさん :04/09/08 18:22
>>797 名前が短くて格好いいから。
非推奨(遅いという意味で)とはいえ、メソッドが多いから。
Listインターフェースにも、せめてgetFirstElement()とgetLastElement()
は入れて欲しかった。
あとawt.Listの名前は、ListPaneにして欲しかった。
今なおEnumerationを返す標準APIに、 名前違ってもいいからIterator返すメソッド追加して欲しい。
803 :
デフォルトの名無しさん :04/09/08 22:55
java house ってどーなったん?
804 :
デフォルトの名無しさん :04/09/08 23:11
場合によってはVector使わなくてはならない時もあるべさ。
もはやない
806 :
仕様晝無しさん :04/09/08 23:30
Javaプログラム中で他のjarファイルを起動する方法がわかりません。 下記のようにpackage bin 中に class Invoke というのをつくり、 package bin; import java.io.*; class Invoke { public static void main(String[] args) throws IOException { String[] cmd = { "Java -jar \"C:\\hoge\\piyo.jar\"" }; Process proc = Runtime.getRuntime().exec(cmd); InputStream in = proc.getInputStream(); in.close(); } } そこでhogeフォルダのpiyo.jarファイルを起動するべく走らせると、 bin.Invoke.main(Invoke.java:19) となってしまいます。 どなたか、他プロセスを起動するのと同様にjarファイルを起動する 方法を教えてください。 お願いします。
>>805 Swing等つかってないのか?
それにArrayListとは完全に同じではないぞ
「ほぼ」同じなだけだ
StringBufferとStringBuilderくらい違う
まぁ初心者向きというところからして同期処理入ってるVector勧めやすいのは確かだな
なんもしらんとマルチスレッドではまるかもしれんし
>>806 >そこでhogeフォルダのpiyo.jarファイルを起動するべく走らせると、
>bin.Invoke.main(Invoke.java:19)
>となってしまいます。
これは情報量0。ちゃんとどういう例外を出しているか前後を含めて
コピペすること。
あと、java.exeを呼ぶのではなく、URLClassLoaderの
インスタンスを生成してmainメソッドを呼ぶと
新しいVMが立ち上がらないので、状況によっては選択肢の一つとして
検討してもいいかも。
809 :
デフォルトの名無しさん :04/09/08 23:39
>>800 Jakarta Commons Connectionsを使えば
藻前が喜びそうなコレクションクラスが沢山見つかるぞ。
>>806 >String[] cmd = { "Java -jar \"C:\\hoge\\piyo.jar\"" };
これは
String cmd = "Java -jar \"C:\\hoge\\piyo.jar\"";
にするかもしくは配列ごとにくぎるかどっちかにすること。
>>800 >
>>797 > 名前が短くて格好いいから。
> 非推奨(遅いという意味で)とはいえ、メソッドが多いから。
> Listインターフェースにも、せめてgetFirstElement()とgetLastElement()
いらんだろ。いきなりlist.iterator().next()で頭からゲットだ。
ラストはlist.get(list.size() - 1)で十分
>>807 >まぁ初心者向きというところからして同期処理入ってるVector勧めやすいのは確かだな
807のような馬鹿に早く滅んで欲しいと願ってる奴は多いだろう。
813 :
仕様晝無しさん :04/09/08 23:57
806 仕様晝無しさんです。
>>810 様
起動できました!
ありがとうございます。
>>808 様
勉強になりました。
今後は例外等はすべてコピーします。
また機会があればURLClassLoaderも
試して見たいと思います。
皆さん本当にありがとうございました。
>>807 あんな中途半端な同期なんぞに頼られても困る。前世紀の遺物は消えろ
816 :
デフォルトの名無しさん :04/09/09 00:29
つーかJava3発表してAPI一新きぼん
>>815 その中途半端な同期すらしらないで
「Vectorなんて使いませんよ、ArrayListでいいじゃないですか」
といってはまってるあふぉを見たことあるからなぁ
まぁ、Swing使ってるかどうかだろう
しんくろないずど すればいいじゃない
Swingなんか使うかアホ
>>817 Vectorと一緒に消えてください。それがみんなの願いです。
821 :
デフォルトの名無しさん :04/09/09 01:16
>>818 遅いから出来るだけ使わないようにしてる。
823 :
デフォルトの名無しさん :04/09/09 02:05
>>822 ついでに例外も出来るだけ使わないようにしている。
生成するのに30秒とかかかるとやってられない。
ディスクガリガリ言わせるのも気になる。
全然面白くないんだけど
Swing好きですが。
>>811 > ラストはlist.get(list.size() - 1)で十分
で良いなら
> いらんだろ。いきなりlist.iterator().next()で頭からゲットだ。
は list.get(0) で十分なような。
827 :
デフォルトの名無しさん :04/09/09 06:51
ArrayListはイテレータよりインデクスアクセスが速い
>>790 JavaWebStartはアプリケーションの配布形式なので、そういう質問は適切じゃない。
ペタペタとコンポーネント貼るだけで完成したアプリケーションをJavaWebStartで配布すればいい。
ついでにいえばwebstartはアプレットもアプリケーションもできるしな
830 :
デフォルトの名無しさん :04/09/09 10:42
>>831 苦労した、ってそのサイトに書いてあるのはメモリサイズとの戦いだけじゃねぇか。
JavaじゃなくてもBREWでも同じ問題あるだろ。
一見Javaの問題に見える
「アプリが止まった時に、ライブラリがバグっているのか、アプリに問題があるのか問題の切り分けができない。」
も、BREWでも同じ事が言えるしな。
それにこれは、ここの開発者が問題の切り分けがうまくないだけな気もしないでもない。
ゲーム開発者は、処理効率をあげるのはうまいが、作業効率をあげるのはうまくないからな。
>>831 つうか、ちょっとはぐぐれよ。
なんでJavaWebStartのしくみと、苦労話が結びつくのかなぞ。。。
834 :
デフォルトの名無しさん :04/09/09 11:55
>>832 確かにその文脈は納得。
だけど、それとは別にWindows/Delphiでダイアログアプリのに比べると、Swing超苦しくない?
自分がSwing使ったのは数年前JB○ilderなんで状況変わってるかもしれないけど。
835 :
デフォルトの名無しさん :04/09/09 13:32
非チェック例外と非キャッチ例外ってなにが違うのですか?
>>835 非チェック例外 非検査例外の方がオフィシャルだが、unchecked exceptionなのでそれも可。
非キャッチ例外 そんな用語はない。
838 :
デフォルトの名無しさん :04/09/09 13:51
839 :
デフォルトの名無しさん :04/09/09 14:42
>>835 非チェック例外とは、ヌルポなどコンパイル時にエラーが出ない例外であり、
非キャッチ例外とは、プログラム記述者がその非チェック例外をキャッチ
するコードを書かない為に、ThreadGroup#uncaughtException()に
処理が行ってしまう例外。
uncaughtのメソッド名の通り。
>>838 ネタか?ネタなのか?
林 晴比古あいかわらず笑わせてくれるな。
>>838 少なくともそれはuncaught exceptionの話ではないな。
>>840 たわけ!
非キャッチ例外は、正式用語じゃ。林先生をバカにすると承知しないぞ。
>>839 ウソではないが正しくもないな。
単純にcatchされなかった例外のことをuncaught exceptionと呼ぶけど、非キャッチ例外とは言わないと思う。
普通に「キャッチされなかった例外」
>>842 バカになんかしていない。
ネタに対して笑わない方がしつれいだぞ。
芸人のネタに気づかないのもしつれいだぞ。
結局835は、またしても例の釣り氏だったと。。。
だいたい非キャッチ例外だと日本語として意味がおかしくないか? キャッチ例外に非ずってことか。
なんかよくわかりませんが、「非キャッチ例外」でグーグルで検索しても1件しかヒットしないので、 メジャーじゃないことはわかりました。
誤用っつーか uncaught exception を直訳しただけっつーか。 他の文書と用語の統一をしようとかいう配慮が欠けてるのは確かだけど。
>>850 どうみても、unchecked exceptionを非キャッチ例外と書いてるのだが。
ちゃんと検索したのか?
byte short int long float double char boolean これらと、Stringが区別される理由を教えてください。
>>852 その方が言語仕様上都合が良いと言語設計者が判断したからです。
っつうか、なぜその仕様になっているかという理由を考えてもしかたない。
そうなっているメリットデメリットを考えるのは意義があるが。
>>852 質問の意味がいまいちわからんが、
Stringは参照型でそこにあがってるのはプリミティブ型だけど。
違いは自分で調べれ。
理由と言われても違うから違うとしか言いようがない。
>>852 の脳内ではPerlやPHPと比較されてんじゃないか?
文字列を表すプリミティブ型があってもいいじゃん!と思ったんじゃないかな
林晴比古。 この人の本読みやすい。
>>857 class TestにjLabel1が無いから。
>>857 jLabel1なんて物がTestクラスに無いから。
_| ̄|○
回答ありがとうございます。 class Test内に Frame1 kita = new Frame1(); kita.jLabel1.setText("test!"); と書いて、エラーは消えるんですが実際実行しても何も起こりませんし、 Frame1をextendsしてもダメでした。 後、jLavel1は同じパッケージ内からだと参照できそうなんですが、私の勘違いでしょうか?(汗
>>863 さん
具体的にどう記述すればよいのでしょうか?スミマセン
>>864 俺の記憶が確かなら・・・
this.jLabel1は存在しないだろう・・・
Frame1クラスの変数をFrame1クラス以外で操作したいのなら・・・
Frame1.* となるのではないだろうか。
>>858 ウソがあって大切なこと書かなくていいなら、だれでも読みやすい入門本書けるね。
>>866 そう?
ちゃんと大切な事も書いてるけど。
って、何が大切な事で、何が大切な事じゃないのかがいまいち分からないけど。
俺には合ってる。
>>865 どうもです。
62 行で static でない 変数 jLabel1 を static コンテキストから参照することはできません。 (62:12)
と出ました。。
>>867 そりゃ、いろいろ書けば、大切なことも中には含まれるだろ。
その中に誰も使わない用語(造語)も含まれているわけだ。
どれが林用語で、どれが公式の用語か、公式じゃなくても通用する用語かわからないような本は、ちょっと問題だな。
ちゃんと(林用語)とでも書いててくれればいいのだが。
あと、レスにも(林擁護)とでも書いてくれれば助かる。
>>868 ごめ〜ん・・・
俺も勉強中でよくわかんないや〜・・・
しっかし・・・
ソース読んでみたけど複雑な事してるね・・・
たぶん、このjButton1_actionPerformedメソッド内で、
わざわざインスタンス作って、
その中で別クラスの変数操作しようとしてるからおかしくなってるのかな・・・?
Testクラスは・・・
public void test(JLabel l){
l.setText("test!");
// Frame1.jLabel1.setText("test!");
}
と、書き換えて・・・
jButton1_actionPerformedメソッド内は、
Test test = new Test();
test.test(jLabel1);
と、書き換えたらコンパイルは通ったよ。
>>869 >そりゃ、いろいろ書けば、大切なことも中には含まれるだろ。
だから、大切な事って例えばどの事よ?
じゃ、大切な事で含まれてない事って何よ?
>その中に誰も使わない用語(造語)も含まれているわけだ。
その用語ってどれよ?
さっきの「キャッチ例外」か?
ただの書き間違いだろ?
別に擁護するつもりはないが、
俺が勉強してる本にケチつけられたら気分いい物じゃないだろ。
そもそも、その叩きも具体的性に欠ける。
どれを見てそんなセリフを言ってんだ。
キミは自分のレスに「林が気に入らないだけ」とだけ書いといてもらえれば、
俺もわざわざレスしてみたりしない。
こんばんは。fedora1の環境ででjdeeをputtyから使っています。 でも、C-c C-v C-. で補完リスト一覧が出てきません。 どなたか設定をご存知でしたら、教えていただけないでしょうか。
>>870 さん
その通りにしたら上手くいきました!
ありがとうございます!
Javaから話が外れるんですが、 よく変数名やクラス名やメソッド名の例で、 hogeとかhageとか使ってますが、 hogeとかhageとかっていったいどういう意味ですか?
fooとかbarと同じ意味だな
876 :
デフォルトの名無しさん :04/09/09 22:35
>>819 遅いからそれだけで使いたくないってだけですかい?
それとも?
877 :
デフォルトの名無しさん :04/09/09 22:38
誰か教えてください。 : : Vector vctr = new Vector(); : (中略) : Iterator itr = vctr.iterator(); : : この場合に"itr"は何クラスのインスタンスになったのでしょうでしょうか?
878 :
デフォルトの名無しさん :04/09/09 22:40
>>823 >
>>822 > ついでに例外も出来るだけ使わないようにしている。
> 生成するのに30秒とかかかるとやってられない。
> ディスクガリガリ言わせるのも気になる。
まるで携帯Java開発者のようだ。
>>829 それはいわゆるアプレットケーションだろう
879 :
デフォルトの名無しさん :04/09/09 22:40
>>877 そんなこと気にするな。
というかそういう捻くれた考え方するな
>>877 Vector の親クラスである AbstractList のインナークラス Itr という
クラスのインスタンスだよ。これで気がすんだか?
>>877 残念ながらitrはインスタンスにはなれないのだ。
882 :
デフォルトの名無しさん :04/09/09 22:48
>>879 よ
>>877 の言うことは漏れも気になる。Iteratorインタフェースには
メソッドの中身の記述がないが、ここでいう"itr"オブジェクトは
メソッドをいくつも持っている。一体メソッドの中身はどこに書い
てあるんだろうか?
>>880 さんありがとうございます。
ところでAbstractListにインナークラスがあるっていうのは
どの本かドキュメントに載っているのでしょうか?
もし教えていただけると助かります。
ps.
>>877 で"でしょうか”の部分を二回繰り返してすみません。
>>882 Iterator インターフェイスはメソッドの仕様を規定する。
あと、補足説明は Vector っつーか AbstractList の iterator() メソッドに書いてあるし。
これらに規定された以上の実装依存の情報を使用すると特定バージョン依存になる危険がより高くなる。
>>882 イテレータインタフェースを実装してるクラスだろkusomamire
>>878 アプレットケーションではなくてWebStartのカプセルの仕方が2つあるということでは?
だからアプリケーションかアプレットかという次元の話とは少し違う>WebStart
WebStartはjnlpAPIを使ったもの・・・としかいえんね
>>883 気になるなら JDK のルートにある src.zip 展開しろ。
Abstract クラスのインナークラスと書いたが >884 のいうとおり
どのクラスのインスタンスかというのは意味がない。知る必要がない。
Abstract#iterator が返すのは Iterator インタフェースをもつオブジェクト
であり、それ以上以下でもない。
>>883 > ところでAbstractListにインナークラスがあるっていうのは
> どの本かドキュメントに載っているのでしょうか?
あー、言い忘れた。どこにも載ってない。
っつかわざと載せてないない。理由は・・・もう分かるだろ。
Iteratorの実装クラスが知りたい人は、 ArrayList list = new ArrayList(); Iterator it = list.iterator(); System.out.println(it.getClass().getName()); やってみるといいよ。 Vector使う奴は氏んでね
>>889 > Iteratorの実装クラスが知りたい人は、
> ArrayList list = new ArrayList();
> Iterator it = list.iterator();
あーあ、こんな書き方してる時点で、分かってないの
バレバレだな w
>>890 夜釣りご苦労さん。
別にそんなところでListなんか使わなくていいよ。
>>891 やっぱりな。突っ込んだのはそこじゃない。
> Iteratorの実装クラスが知りたい人は、
と書いて、Vector ではない別のクラスを持ち出したとこだが。
Vector と ArrayList の iterator メソッドが返す
インスタンスはたまたま同じなだけだ。
お前もまたインタフェースが分かってない
1人だということが証明された。
>Vector と ArrayList の iterator メソッドが返す >インスタンスはたまたま同じなだけだ。 やられた。ここまで馬鹿だとは思わなかったよ・・・ 誰もVectorの話なんかしてないよ。つまらんところしか見えないのな。 任意のインターフェースについて getClass().getName()でクラス名が取れるってことだ。
importができねー なんでだよ app1.java ----------------------- import printer; public class app1 { public static void main(String[] args) { printer printer1 = new printer(); printer1.print(); } } --------------------------------- printer.java --------------------------------- class printer { public void print() { System.out.println("Hello from Java!"); } } ---------------------------------- app1.java:1: '.' がありません。 同じディレクトリにprinter.classがあるのにどういうことだふざけんな
895 :
デフォルトの名無しさん :04/09/09 23:43
>Vector と ArrayList の iterator メソッドが返す >インスタンスはたまたま同じなだけだ。 ふーん、内部クラスなのに同じなの? それはそれでなぞだねぇ
>>893 あほかお前は。スレ読み返せ。
で、Class#getName は無名クラスの場合は何を返すんだ?
今から調べるか? w
897 :
デフォルトの名無しさん :04/09/09 23:46
>>895 どういう意味だ? 書き方が悪いのか。
実装が同じインスタンスを返す。
>>897 うをっ
ほんとだ
この参考書あてにならねーな
>>896 >で、Class#getName は無名クラスの場合は何を返すんだ?
クラス名を返すが、それがどうかしたのか?
別に今から調べてもいいぞ。
ナンノハナシシテンノ?キミタチ?
半月前くらいに、なんとなく面白そうだったのでJavaに手を出してみた初心者です。 まずは簡単なアプリから…と、グラフィックビューアを作ろうかなと思っています。 現在、Java Advanced Imaging Image I/O Tools をインストールし なんとかBMPの表示ができたところです。 さて、諸先輩方に質問です。 上記のアプリ(現在まだ作りかけですが)をJAR形式にまとめるとします。 この場合、アプリを使うユーザも自身の環境に、Image I/O Tool をインストールする必要があるのでしょうか? もしくは、標準のランタイムだけで使う方法はあるのでしょうか? なにとぞよろしくお願いします。 #ものは試しと、サブノートにjarファイルを持っていってみたんですが #案の定、動きませんでした(笑
> この場合、アプリを使うユーザも自身の環境に、Image I/O Tool をインストールする必要があるのでしょうか? ある。
904 :
デフォルトの名無しさん :04/09/10 01:06
質問させてください。 ifばっかり使うのと、else ifも使うのは何か違いがあるのですか?
906 :
デフォルトの名無しさん :04/09/10 01:14
エクスプローラのようなファイルツリーを作りたいんですけど、 エクスプローラライクなUIのアプリではルートがDesktopで、その下にMy Documents、My Computer、My Networkplaces ってなってますよね。 そのDesktopのパスってどう書けばいいんでしょうか? 自分で調べてみようと思って、 File file=new File("c:\\"); String str=file.getParent(); としてみたら、strにはnullが返りました。 listRootsでドライブのリストはできますが、その上はできません。 listRootsで返るドライブのリストが最上位パスなんでしょうか?
>>903 ありがとうございます。
となると、自前なりネットなりでBMP関連のクラスを用意した方がいいかもしれませんね・・・。
>>904 さっそくだがJava暦半年の自分が答えてみる!(一度やってみたかったんだ)
if A 〜
if B 〜
のとき、AとB両方が成り立つ場合、もちろん両方実行される
逆に
if A 〜
else if B 〜
のとき、2つ目は「Aが成立せず、かつ、Bが成立する」ときにのみ実行される
if A 〜
else {
if B 〜
}
と書くこともできる
間違って…ないよね?
>>906 javax.swing.filechooser.FileSystemView とか使ってくれ。
Java暦半年ってなんだ、半月だよ・・・私は・・・ orz
java歴がどうこう言うレベルの問題じゃないな。
>>902 最初のifがtrueだったとき、後に続くifの括弧の中の比較をするかどうか。
>>905 なかなかイヤなヤツだな。
スレタイの「初心者大歓迎」っての外さないとな。
>>904 とにかく・・・
>>907 とか、
>>911 が言ってる通りな感じです。
特別な意味がない限り、if-else ifを使うべき。
if-else ifだと、どこかで真になれば、そのifブロックから一発で抜けるけど、
ifをツラツラ書くと、その都度比較を行い、
無駄な処理をする事になる。
処理が重くなる。
>>912 ライセンスの再配布に関する条項で許可されてるなら、という但し書きを忘れちゃダメよ。
>>913 Java初心者は歓迎だけど馬鹿はお呼びでないよ。
>>910 も書いてるけどJava以前の問題。
そんな必死になって責め立てるほどのもんでもなかろうに。 中級者面したVector馬鹿の方がよっぽど有害
>>908 FileSystemView fsv=new FileSystemView();
と書いてみると、
Cannot instantiate the type FileSystemView, since it is not a concrete class
とのことで、コンパイルできません。
以下に確認用のコード貼ります。import文なんかは省きます。
public class PathGetter
{
public static void main(String[] args)
{
FileSystemView fsv=new FileSystemView();
File[] str0=fsv.getRoots();
for (int i=0;i<str0.length;i++)
{
System.out.println(str0[i]);
}
}
}
FileSystemView fsv = FileSystemView.getFileSystemView();
>>916 お前もたいがい頭悪いな。
いいか?if〜elseとif〜elseif〜elseの違いがわからないと言う、それそのものに対して馬鹿といってるんじゃない。
これだけならまだ初心者の範疇と言われればそうかも知れない。
こんな質問すらわざわざ2chに書き込んで答えてもらうのを待つしか
解決法を知らない奴に対して馬鹿と言っているんだ。
筋金入りの教えて君じゃねーか。
elseifのことだけで書き込むような奴だぞ。次はswichか?ループ文か?
だからjava以前の話だと書いたんだ。
まー綴り間違えた事に突っ込まれるんだろうけど
>>919 最初からそう書かないからいらんやり取りが続くんだ。
さっきからこのスレ、理由を省いて叩くだけの奴のせいでくだらんことでスレが伸びてる。
922 :
デフォルトの名無しさん :04/09/10 03:06
>>907 ,911,913
マジ感謝!
基本が大事だということが身にしみて分かりました・・・
>>918 駄目です…
そのようにしても
「FileSystemView.getFileSystemView cannot be resolved or is not a type」
と怒られます。
とりあえず明日またがんばってみて駄目なら又来ます。
レスくれたお二方(一人?)ありがとうございました。
925 :
デフォルトの名無しさん :04/09/10 10:55
PKCS12形式のクライアント証明書をJavaで使える形式にするにはどうするんですか?
926 :
デフォルトの名無しさん :04/09/10 12:39
JPanelにJScrollPaneを付けたのですが 画面の大きさを変えたりしてもスクロールペインが活躍してくれません。 パネルの大きさが認識されてないのでしょか? ちなみにレイアウトマネージャとしてボーダーレイアウトを使用しております。
927 :
デフォルトの名無しさん :04/09/10 12:39
>>923 クラス名を紹介されたら、「どのパッケージのクラスか」は
自分で確認しよう。そしてAPIドキュメントも読もう。
928 :
デフォルトの名無しさん :04/09/10 13:04
println の ln はなんのことでしょうか。
オーバーライドって英語で書くとなんですか? overwrittenだとオーバーリトゥンですが。
934 :
デフォルトの名無しさん :04/09/10 14:27:09
物凄い初歩的な質問で恐縮ですが KeyTypedイベントが起きたときに、"w"キーが押されたら"w"と出力したいのですが keyTypedメソッド内で if(e.getKeyChar().equals("w"){ System.out.println("w");} とすると、 getKeyCharの後で「charは間接参照できません」 というコンパイルエラーが出てしまいます。 間接参照というものが理解できないんですが どうしたらいいんでしょうか
935 :
934 :04/09/10 14:28:46
カッコが1つ足りませんでした if(e.getKeyChar().equals("w")){ System.out.println("w");} です。 他に、char型の変数keyinput1を作り keyinput1 = e.getKeyChar(); if(keyinput1.equals("w")){ System.out.println("w");} としても駄目でした。 equalsが駄目なのかと思い keyinput1 = e.getKeyChar(); if(keyinput1.compareTo("w")){ System.out.println("w");} でも駄目でした
もしかしてthisキーワードって二通りの使い方がありますか? ・メンバ変数とローカル変数を区別するときに使う ・メソッドを呼び出したクラスオブジェクトの参照を保持する
937 :
934 :04/09/10 14:43:15
自己解決しました if(e.getKeyCode==KeyEvent.VK_W){ System.out.println("w");}
>>934 悪いことは言わないから入門書一冊買って読め
プリミティブ型と参照型の区別もついてないのに背伸びしようとするな
939 :
934 :04/09/10 14:52:45
>>938 よくわかりませんが、夏休みの宿題だからそれどころじゃないんです
まあ、自己解決したし入門書はいらないと。
すげーな、どうやって解決したんだ?
>>936 そこに挙げられたものは2通りのうちのひとつでしかないな。
両方同じ。
942 :
934 :04/09/10 15:06:22
パンがなければお菓子を食べればいい もとい 入門書がなければAPIを読めばいい です
APIを読むってソース読んだのか。
だったら初めからAPI Specification読めばいいじゃねーか。
JavaDoc嫁。
夏はまだ続いてる・・・と
大学で夏休みは9月いっぱいって所もあるしな
質問です Javaでテキストファイルの行数を スマートに調べる方法はないでしょうか? BufferedReaderでreadLine()出来た回数で調べるのより 良い方法がありませんか?
改行コードを数えれば
それいけスマート
たまーに訳わからんレスが入るよな。 どうせならさ・・・ !スマート車関機 くらい訳わからないのが良い。
>>698 > サーバの設定云々も実は不要だったりする。
本当に不要なのか、はなはだ疑問。
MIMEタイプの設定がすでにそのサーバでなされているというのなら、
たしかに不要だろう。
サーバの設定をしなかった場合、
サーバ側がクライアントに返すMIMEタイプはどうなっていますか?
ちゃんと
"Content-Type: application/x-java-jnlp-file"になっていますか?
もしサーバの送るヘッダが上記の物ではないにもかかわらず、
>>698 の環境において、JavaWebStartが起動するというのなら、
それは
>>698 の使っているブラウザなどのクライアント側が、気のきいたよくできたやつで、
拡張子などをたよりに、 JavaWebStartを起動してくれているだけではないだろうか。
つまり、サーバの設定を正しく行わないと、
気の聞かないトーマスな環境では正しく動かない恐れがあるのではないか。
//それいけスマートとはまた古風な。
955 :
デフォルトの名無しさん :04/09/10 18:55:37
>>926 さんへ。
私の場合ですが、JPanelに画像を書いていたときそういうようになったことあります。
JPanelをDimension 使って、表示するとできました。
参考になればよいですが。
失礼します。いきます。 オブジェクトの受け渡しは、双方解釈できての Serializable#writeObjectからSerializable#readObjectだけで通るものですか? かなり不安いっぱいです。試したいのですが、まだ手元にAIXきません。見たこと触った事もありません 要塞見たいのがくるのでしょうか、要塞かどうかはいいです。
MSN%A5%E1%A5%C3%A5%BB%A5%F3%A5%B8%A5%E3%A1%A1 %B2%BB%C0%BC%A5%C1%A5%E3%A5%C3%A5%C8%A4%C7%A4 %AD%A4%EB%BF%CD%A4%A4%A4%EB%A4%AB%A4%CA%A1%A9 だれか、このコードを日本語化する方法知りませんか?
二つほど質問です。 1.もともとAWTで作ってたものをSwingに作り変えてるのですが、 コンパイル時に推奨されないAPIを使っていると出ます。 (実行自体は問題なくできる) で、具体的にどこが推奨されてないかを特定する方法というか、 ヒントみたいなものをいただけるとありがたいです (ちなみにJavaのバージョンですが、NetBeansの3.6にバンドルされてきたやつで分かるでしょうか?) 2.1と同じもので、AWTの時には、メニューが正しく表示できていたのですが、 Swingに書き換えてから自家製のコンポーネントの下に隠れるようになってしまいました。 (JButtonに対しては隠れていない) なぜでしょうか? ちなみに自家製のコンポーネントは、全部AWTで出来てるので、その辺が関係してるのかな?とも思いつつ 他に聞けるところも無いので、ここで質問してみました。 よろしくです。
961 :
デフォルトの名無しさん :04/09/10 22:05:21
AWTとの混在は厳しいよ Swingがなんでlight weight componentと呼ばれてるか知っているかい Swingのコンポーネントはそこにあるように見えて実はない 実際にはデータのみを管理してウィンドウに書かれた絵だから
レスどもです。 やっぱりAWTとの混在がやばげですか。 正直自家製のコンポーネントのほうはかなり作りこんじゃったので Swingへ書き換えるには相当な気力が必要なんですよね。。。トホホ メニューのとこだけでも回避する方法ないですかね?
どういったコントロール使ってるかによる AWTコントロールでカスタマイズってあんまりできないから 参考程度でさっさとSwingで作り直すがよろし まぁ、考え方が違うところが多いのでSwingになれるまでがきついかもしれない なれればSwingでカスタムコンポーネントぺたぺたNetBeansではりつけれるので便利になるけどね
すいませんおちゃらけました、また弾けるかも知れませんが落着いて書いてみます。 都合でAIXを使う事になりそうでして。ばっさり割愛しますが、Objectの投げ合いをして吸い上げるようです。 そこでjavaの環境依存って実際本当にないのかが疑問になりまして、 とりあえず辿り付いたSerializableのAPIをちゃんと読んでみたわけですが、どうもしっくりこないと言うか 「直列化されます。」と単純に言い切られて納得できませんで、 AIX全くわかりませんが見ればIBMの提供するjdkが一般的だとか、そこでも疑問でして各ベンダで統一してる 上手く言えなさそうです HelloWork hello = new HelloWork(); hello.writeObject(new ObjectOutputStream(socket.getOutputStream())); ↓ HelloWork work = (HelloWork) (new ObjectInputStream(socket.accept().getInputStream())).readObject(); こんな感じで、helloとworkは同じになれます?環境とか関係ないものです? 説明無理でしたまた出直します。
965 :
デフォルトの名無しさん :04/09/10 23:10:44
>>964 RMI(Remote Method Invokation)で調べてからで直してこい。
>>960 非推奨メソッドについては、javacからなら-deprecationオプションを付けて
コンパイルすると教えてくれるのだが、NetBeansからどうやるかは知らない。
コンパイラを内蔵しているのではなく外部コマンドとしてjavacを呼ぶように
なっているのなら、与えるオプションを設定する方法はあるはず。
AWTとSwingの混在で、とりあえずメニューが隠れるのを回避するだけなら、
メニューをまだ1つも構築していない状態で、
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
しとくといいかもしんない。
>>963 レスありがとうございます。
Swingへの書き換えについては、まだ微妙ですが、まとまった時間が出来たらやって見ようと思います。
(表示する位置とか微妙な調整が面倒なんですよね。。。ちなみに作ってるのは将棋盤です)
>>966 レスありがとうございます。
おっしゃるようにNetBeansでは外部コンパイラを使用しています。
で外部コンパイラのプロパティ(NetBeansで設定可能な)のところでは、
-deprecationオプションが既に設定済みのようなのです。
(実を言うと、この推奨されてない云々のメッセージはかなり前から意識していて、
以前もいろいろ自分でいじくってみた事がありまして、、、
デフォルトで設定されていたものか、自分で試しに設定したものか、
今となっては記憶があやふやで良く分からない!)
こちらはどちらかというとNetBeansの問題なのでしょうかね?
それからおかげさまで、966で書かれたメソッド書いたら隠れずに表示されるようになりました。
まだなんで表示されるようになったのか良く分かっていませんが、、、
(この辺は963さんもご指摘のライトウェイトコンポネント云々を理解しないといけないのかな?)
いずれは前にも書いたとおり、Swingへ書き換えをやろうと考えていますが、
取り急ぎ気になる点が解消できました。
改めて感謝感謝でした。
968 :
デフォルトの名無しさん :04/09/10 23:42:31
質問です String型は String str="hogehoge" と文字列をセットできるのに StringBuffer型は StringBuffer str="hogehoge" とするとエラーになるのは何故ですか? また StringBuffer str1=new StringBuffer("hogehoge"); StringBuffer str2=new StringBuffer("hogehoge"); とすると str1.equals(str2)がfalseを返すのですが、何故でしょうか? (String型だとtrueになります。)
>>968 > String str="hogehoge" と文字列をセットできるのに
仕様。String だけの特例。Integer i = 1 とかもだめでしょ。
> str1.equals(str2)がfalseを返すのですが、何故でしょうか?
> (String型だとtrueになります。)
APIドキュメント嫁。
String#equals
StringBuffer#equals (は実装されてないから Object#equals)
もしかして、SWT&jfaceって人気ないの?
971 :
デフォルトの名無しさん :04/09/11 00:14:56
>>969 なるほど。
ところでAPIドキュメントって何ですか?って聞いたら
怒られそうなのでやめときます。
String型の文字列プールの例外にはびっくりしました。
同じ文字列なら同じオブジェクトを参照するから
str1==str2がtrueを返すなんて知ってなきゃ分かるはずがない
>>971 > str1==str2がtrueを返すなんて知ってなきゃ分かるはずがない
これを知ってんのに API ドキュメントが分からないのか?
それはさておき、ほんとに分かってるのか。
以下の結果はどうなる?
String s1 = "a" + "b";
String s2 = "ab";
System.out.println(s1 == s2);
s1 = "a";
s1 += "b";
s2 = "ab";
System.out.println(s1 == s2);
s1 = new StringBuffer("ab").toString();
s2 = "ab";
System.out.println(s1 == s2);
とりあえずリテラルという言葉を覚えたほうがいい。
String型のリテラルは一度定義すると変えられないと書いてありました ただ、単純な+操作だけはできて 別々のオブジェクトをあたかも結合して一つのオブジェクトに見せる みたいな・・・
>>976 残念 1 つ目は true。
同一式での文字列結合はひとつの文字とみなされ、
同じコンスタントプールが使用される。
979 :
デフォルトの名無しさん :04/09/11 01:32:45
>>955 ありがとうございます。
解決しました!
980 :
デフォルトの名無しさん :04/09/11 01:48:24
>>973 なんでこれが全部trueになるの?
==はオブジェクト同士の演算なんだからfalseじゃないの?
s1.equals(s2) だったら全部trueになるのは納得行くけど・・・
とりあえず半分解決しました。 人様のアプリのスクリーンショットを見て、 ルート(\) と書いてあったので、試しにパスに"\\"としてみたら、My DocumentsとRecycle binが ツリーに現れました。 なぜかMy Computerが出ていませんが… さらにぐぐってみます。
>>978 ふ〜ん
まぁ実際のところ、ソースん中で
if(xx == yy){ /* */ } ;//いずれも非プリミティブ(String含む)
って記述みっけたら、書いた奴呼び出して即書き直し命じてもよろしいか?
そんとき、
「残念、同一式での文字列結合はひとつの文字とみなされ、
同じコンスタントプールが使用されるんですよ。」
とでも言おうものなら、衝動的に殴ってしまってもよろしいか?
あ;いらね〜か
>>983 後半はよろしい。
しかし前半は元々そういう意図だったらどうすんだよ
つーか言語仕様の話だろ。実際のコーディングスタイルなんか自分のところで決めろ。
987 :
デフォルトの名無しさん :04/09/11 07:34:49
つーかよ、大概のオブジェクトは参照アドレスが違うから 特に自分がObjectを継承して作ったクラスのインスタンスは ==で判定しても問題ないよ 問題が出るのは、プリミティブラッパーとか、equals()を オーバーライドしてるクラス まあ、言御仕様上は、==をプリミティブ型に限定するか、 または==で,統一する方向で規定してほしかったけどね プリミティブ型ってのが癌だったな Javaがでてきた頃はマシンパワーが足りなかったから こんな仕様にするしかなかったんだろ
988 :
デフォルトの名無しさん :04/09/11 08:05:45
==演算子をシンタックスシュガー扱いにして コンパイラがequalsで比較するようなコードを吐けばいいのにね。 if (left == right) {...} をこんな感じで処理とかさ boolean _b; if ((left instanceof Object) == false) _b = (left == right); else if (right == null) _b = (left == right); else _b = left.equals(right); if (_b) {...} そうすると実質演算子のオーバロード状態になるか。
989 :
デフォルトの名無しさん :04/09/11 08:35:34
>>987 >犬概のオブジェクトは参照アドレスが違うから
↑ 犬?犬って何だよ!?
www
990 :
デフォルトの名無しさん :04/09/11 08:40:02
>>954 >
>>698 > > サーバの設定云々も実は不要だったりする。
>
> 本当に不要なのか、はなはだ疑問。
疑問があるなら実際にやってみろと。
> もしサーバの送るヘッダが上記の物ではないにもかかわらず、
>
>>698 の環境において、JavaWebStartが起動するというのなら、
> それは
>>698 の使っているブラウザなどのクライアント側が、気のきいたよくできたやつで、
> 拡張子などをたよりに、 JavaWebStartを起動してくれているだけではないだろうか。
最近のメーカー製PCはJavaWebStartが標準搭載されているので問題ないことばかりだが。
992 :
デフォルトの名無しさん :04/09/11 08:47:03
>>989 おめー里見八犬伝もしらねーの?
犬概といったら、八犬士のひとり犬概現八のことにきまってるだろ
993 :
デフォルトの名無しさん :04/09/11 08:49:58
>>989 >
>>987 > >犬概のオブジェクトは参照アドレスが違うから
> ↑ 犬?犬って何だよ!?
> www
↑
wwwってなんだよ? ワールドワイドウェブのことか?
それとも、ワイルドワイドウェストのことか?
994 :
デフォルトの名無しさん :04/09/11 08:53:37
>>992-993 あ!?お前ら何言ってるの??
日本語で書いてもらえませんか!?
さっぱりですよ??
すいません、質問です。 これからJavaをはじめようと思うのですが、コンパイラーというものはどこで売ってるのですか? デオデオで訊いてみたのですが、売っていないといわれ途方にくれています。 よろしくお願いします。
>>994 ワイワイウェ〜〜〜〜〜〜〜〜〜〜スト!
by ヴィル・スミス
997 :
デフォルトの名無しさん :04/09/11 09:01:00
998 :
デフォルトの名無しさん :04/09/11 09:02:58
1000 :
デフォルトの名無しさん :04/09/11 09:04:06
Java質問・相談スレは52回を以って終了とさせていただきます。 長らくのご愛顧ありがとうございました。 1000!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。