Java低速GUI Swing 5
..
486:デフォルトの名無しさん
07/06/11 17:23:13
MigLayout使ってる人って居る?
シンプルで結構良さげだったのだけど。
487:デフォルトの名無しさん
07/06/11 17:38:11
まず>>486が使ってみてメリット、デメリットを押さえた感想を教えてくれ
488:デフォルトの名無しさん
07/06/11 21:52:58
>>484
やってること同じかもしれないけど
URLリンク(terai.xrea.jp)
private void updateFont(final Font font) {
EventQueue.invokeLater(new Runnable() {
public void run() {
FontUIResource fontUIResource = new FontUIResource(font);
UIDefaults defaultTable = UIManager.getLookAndFeelDefaults();
for(Object o: defaultTable.keySet()) {
if(o.toString().toLowerCase().endsWith("font")) {
UIManager.put(o, fontUIResource);
}
}
//SwingUtilities.updateComponentTreeUI(MainPanel.this);
recursiveUpdateUI(MainPanel.this);
frame.pack();
}
});
}
private void recursiveUpdateUI(JComponent p) {
for(Component c: p.getComponents()) {
if(c instanceof JToolBar) {
continue;
}else if(c instanceof JComponent) {
JComponent jc = (JComponent)c;
jc.updateUI();
if(jc.getComponentCount()>0) recursiveUpdateUI(jc);
}
}
}
489:デフォルトの名無しさん
07/06/11 22:22:00
>>485
英字さえ見栄えがよけりゃいいって感じかと
490:デフォルトの名無しさん
07/06/12 02:50:08
スレ違いかもしれないが、質問。
Swingでアプリを作りたいんです、得意先台帳に送り状印刷機能がついたようなのなんですが。
Accessみたいにプリンタ(ドットインパクト)の指定と用紙サイズ(ヤマトだと15*4 1/2インチ)を指定して、
ボタン一発で印刷ってできるのでしょうか?
詳しい方教えてください。
よろしくお願いします。
491:デフォルトの名無しさん
07/06/12 03:48:24
それを自分で作るんだろうが。
javaでドラクエ作れますか?て聞いてるのとかわらんな。
最近javaスレでこの流れ多いな。
492:デフォルトの名無しさん
07/06/12 04:37:40
POIでいけるんじゃね?
493:デフォルトの名無しさん
07/06/12 08:47:19
>>490
PrintRequestAttributeSet
494:デフォルトの名無しさん
07/06/12 10:26:53
>>490
プリンタドライバ経由ならできるよ。
javax.printパッケージを見るといい。
495:デフォルトの名無しさん
07/06/12 11:38:35
佐川やヤマトの送り状とか契約書とかドットインパクトでの印刷はよくやるな
業務系だと連帳は基本だしな
ただ、Swingとあまり関係のないところだな
ネイティブのプリンタのプロパティ使いたい場合awtのダイアログを使ったほうがいい場合もあったような
あとitextあたりでPDFを生成して印刷はAdobeReaderに任せるという方法もある
ヤマトならcsvとかXML作ってヤマトが無料配布している送り状印刷ソフト使う手もある
備考欄とかイマイチ文字数が足りないとかあるけど、細かいカスタマイズがしたいとかなら
予算次第(&個数)だがヤマトシステムに話をしたほうがいいかも
496:デフォルトの名無しさん
07/06/12 12:32:14
毎月1000部くらい刷るって言ったらソフト作ってくれるのかな
497:デフォルトの名無しさん
07/06/12 12:54:31
>>496
作ってくれるかどうかはお金次第でしょ。
498:デフォルトの名無しさん
07/06/12 13:35:48
あとはシステムだけじゃなくそこの担当地区の営業さんの力次第ってのもある
地区によっては厳しいところもあるからそういうところはプッシュしてくれる
でも1000部程度で乗せるものによっては自前で印刷したほうがいいかも
長期間にわたって定期的に発送などならちゃんと契約すれば自前で印刷とか梱包もやる必要はないよ
資材とか送るとヤマトのほうで全部やってくれる
1000枚の送り状番号の管理とか印s夏して箱詰めとかが面倒だと思ったら
まずは近くの営業の人(ドライバーとか)に話をしてみるといいかと
499:デフォルトの名無しさん
07/06/12 13:36:03
>>497
簡単なんだから自分で作れよ。
500:デフォルトの名無しさん
07/06/12 23:59:02
皆さん(>491除く)、色々と有難う。
PDFを使うやり方や、ダイアログを使うやり方だと、
ボタン一発ではないので面倒くさがられてしまいます。
現在の使いかただと、キー入力のスピードに画面の表示が追いつかないくらいなので。
>>493,494氏にお教え頂いたのを勉強してみようと思います。
501:デフォルトの名無しさん
07/06/13 00:25:39
PDFを使う利点はプレビューできるってとこだな
Accessとかで手軽にプレビュー作れてたシステムの置き換えに使うといい
あとダイアログはだす、ださないだけの違いだからどうにでも
現在の使い方だとキー入力に画面が追いつかないってのが意味不明
502:デフォルトの名無しさん
07/06/13 00:31:46
javax.printだと、Graphicsに書き込むことには違いないから、JComponentのpaintComponentsからも同じ処理呼び出せばプレビュー自体は比較的簡単だよ。
標準で持ってて欲しいとも思うが。
503:デフォルトの名無しさん
07/06/13 01:56:40
PDFを使う利点は偽造されにくいっていうのも
どこかのサイトに書いてあったけど本当?
504:デフォルトの名無しさん
07/06/13 02:52:14
印刷の途中仮定という意味でなら、PDFなんて中間形式使わずに直接印刷したほうが偽造されにくい。
505:デフォルトの名無しさん
07/06/13 08:43:41
xsl-foのこともたまにで良いので思い出してあげてください。
まさに組版並の印刷用途向け中間形式なんだが。
まあ、まともにサポートしてるライブラリは商用ライセンスだが。
xsl-foをjava2dにさえ描画できればあとはどうにでもなる。
てか、○○さん以外ありがとう
とか言ってる奴たまにいるけど馬鹿かこいつら?
506:デフォルトの名無しさん
07/06/13 09:46:26
かわいそうな人はスルーした方がお互いのため。
507:デフォルトの名無しさん
07/06/13 10:04:45
JPopupMenu#show を呼ぶと、デフォルトで、最初のメニュー項目が
選択されてしまうのですが、これを選択されないようにすることはできますか?
508:478
07/06/13 10:33:04
>>488
おお、情報提供ありがとうございます。
再帰的にコンポーネントをゲットしてフォントを変えていくんですね。
参考になります。
509:デフォルトの名無しさん
07/06/17 23:55:36
すいません、swingで
javax.swing.JOptionPane.showMessageDialog(null, "hello");
で helloと表示されるダイアログが表示されるのですが、
このhelloのフォントってどうやって指定するのでしょうか?
リファレンスみたのですが、どうもそのような設定項目がなくて…
510:デフォルトの名無しさん
07/06/18 00:12:28
一応出来るけど、OSがメッセージだすように環境依存ってことになるから
将来のバージョンで動作が保障されないとかそういうことになってもいいのかい?
カスタマイズしたダイアログがほしいなら自前で作成すべき
あと最初の引数をnullにする場合なんてありえんと思う
511:デフォルトの名無しさん
07/06/18 00:30:00
>>510
コマンドラインから出したり。
512:デフォルトの名無しさん
07/06/18 10:05:59
>>509
javax.swing.JOptionPane.showMessageDialog(null, "<html><font size=20 face=\"MS 明朝\">hello</font></html>");
513:デフォルトの名無しさん
07/06/18 13:40:36
>>509
LookAndFeel
514:デフォルトの名無しさん
07/06/18 14:53:27
VB.NET C# 使いなんだがマルチプラットフォームに興味があるのでJava使ってみたいんだけど・・・・気になる点が2つほど
1.
LinuxとWindowsで基本的なコントロール(テキストボックスとかリストビューとかグリッド)使ってDBのデータIOを行うアプリを作りたいんだけど
LinuxとWindowsは意識せずにまったく同じソースでいいの?
それともVMごとにコンパイルオプションを指定するような感じになるの?
2.
.NETと比べてUIのモッサリ感はどう?
.NETのモッサリ感は我慢できるレベルだという定義で
内部処理の高速性は気にしないものとします。
515:デフォルトの名無しさん
07/06/18 15:20:17
>>514
1. 同じソースで同じバイナリ(クラスファイルだけど)でよい
2. 起動はモッサリだが動けばUIの速度は普通(昔はモッサリだったけど最近はよくなってきた)
516:デフォルトの名無しさん
07/06/18 15:23:55
>>514
SwingはJava5 Java6 など新しいものの使用をすすめる。
WinFormとどっこいくらいには快適になってる。
517:デフォルトの名無しさん
07/06/18 16:04:38
>>515
>>516
レスサンクス
なるほど 話の通り完全に同じソースでいけるわけなんだ
やっぱ便利そうだなぁ
C++でマルチプラットフォーム用の書いてたときはDefine切りまくりで
頭弱いから途中で頭がこんがらがってたしw
モッサリ感は現状最新のものを使って進めていけば.NETと同じレベルになりそうだからその方向でやってみようかなと
本当ははドトネト選ぶ時にJAVAにしようかな?と迷ったんだけど重いって話を腐るほど聞いてたんでドトネトにした
実際使ってみたらドトネトも思ったよりもモッサリで・・・・新しいソフト作る時はJAVAも視野に入れてもいいかもと思いだした
どうもこのスレの感じからすると普通に問題なさそうだからちょっと簡単なソフトから使ってみることにするよ
518:デフォルトの名無しさん
07/06/18 16:24:28
もっさり具合はアプリによるのでは?
.NETでもそうだけど、メモリは食うね。HDDとメモリが速ければ大丈夫。キャッシュの量にも大きく左右される。
Pentium4系だとJavaの速度は遅めでAthlon64やPentiumM系列はあからさまに速い。
1.4.1以降はGUIの描画にたとえばWindowsだとDirectDrawを使ったりハードウェアアクセラレーションを利用している。
6.0でVMの大幅に速度向上してるのでクライアントサイドなら6.0以上をすすめる。便利なAPIも多いし。
jdkに付属のswingsetデモを見てみるといいかも。
519:デフォルトの名無しさん
07/06/18 16:41:29
あとは jar 一個ってわけにいかないアプリだと
起動スクリプトを環境毎に書く必要有り。
つっても path や classpath の指定方法が違うだけなんだけど。
520:デフォルトの名無しさん
07/06/18 16:58:09
>>518-519
まぁアプリによるといえばよるんだけどUI描画全般は遅いと感じてしまう・・・
いい情報サンクス!
クライアントAPPなので とりあえずそのバージョンを最低レベルとして環境整えてみるわ
>起動スクリプトを環境毎に書く必要有り
まぁそれくらいなら別に問題ないとおもうさ
521:デフォルトの名無しさん
07/06/18 17:17:22
>>519
MANIFEST.MFのClass-Pathエントリにjarファイル名を並べれば
パス通るよ。
522:デフォルトの名無しさん
07/06/18 17:34:19
IDEがマニフェストファイルにクラスパス通してくれるから
ほとんどの場合何もする必要はないと思うが
523:デフォルトの名無しさん
07/06/18 17:37:35
とはいえ快適に動かす場合、アプリごとにVMオプションを変えるのが普通だから
フック用のexeとかスクリプトおいておいたほうがいいけどな
マニフェストファイル内に参考VM設定入れれるようにしてほしいな
webstartは多少入れれるようになったし、アプリケーションの塚と削除、
プログラムやデスクトップアイコン登録やってくれるのはいいが、
肝心のスタンドアロンアプリで出来ないのが納得いかねー
524:デフォルトの名無しさん
07/06/18 18:00:08
まあ、File f = new File("."); hogehogeとかやってはまるなよ。
525:デフォルトの名無しさん
07/06/18 18:18:13
>>524
Swingとどういう関係が?
526:デフォルトの名無しさん
07/06/18 19:22:25
そもそも>>514がswing関係ないだろ
527:デフォルトの名無しさん
07/06/19 09:32:28
>>519
fatjarでまとめてやれば、1個でおk。
ただ、LGPLなライブラリをfatjar化したときのライセンスが気になる。
動的リンクとみなしてくれるのか、静的リンクとみなされるのか。
528:デフォルトの名無しさん
07/06/19 11:43:12
いや、普通にLGPLのライセンスに従うだけ
静的なのか動的なのかでは動きは変わらない
LGPLはライブラリのバージョンアップなどが合った場合差し替える権利を保証するだけ
だからアーカイブ方法を提示してあげるだけだよ
静的だとオブジェクトファイルやコンパイル時のバージョンなどを明記すればよかったが
動的だと差し替えが容易なのでその記述が簡略化されるだけ
529:デフォルトの名無しさん
07/06/25 23:13:07
Java5でUTF-8の濁点入りの文字列をJTextFieldで編集するとカーソルがずれて、
Java6で濁点入り文字列をJLabelで表示すると濁点が1文字として表示されるんですが、
普通に1文字で表示してしかもカーソルがずれない方法ないもんでしょうか?
530:デフォルトの名無しさん
07/06/25 23:28:09
環境は?
俺はずれたことないのだけれども、そのずれる文字コードはなに?
531:デフォルトの名無しさん
07/06/26 02:08:43
フォントに問題あるんじゃないの
532:529
07/06/26 02:34:40
ごめん、スレまちがえた。
MacのSwingの話です・・・
Mac板逝ってきます。
533:デフォルトの名無しさん
07/06/26 10:51:45
環境によって違うとしても
その違いは仕様で片付けるにはあんまりだな。
534:デフォルトの名無しさん
07/06/26 12:43:31
Macでも日本語がおかしいとはきいた事がないな
535:デフォルトの名無しさん
07/06/26 14:51:27
macのネイティブLaFにはバグがあるけどな。
536:デフォルトの名無しさん
07/06/26 14:53:31
Macじゃなくて、Windowsでも再現するかはチェックしたいな・・・
再現コードがほしい
|-`).。oO(・・・・・・MacのMustangの日本語に関する問題としては、
レンダリングエンジンの問題の件、直るのか?
QuartzというMac固有のレンダリングエンジンからSunのレンダリングエンジンに変更されて
フォントの種類によってベース位置がずれる問題・・・。
半年以上前から、MacのJavaスレで報告されていたのに、新しい開発版Javaが出てこないから
直してるのかわからねえ・・・)
537:デフォルトの名無しさん
07/06/26 14:57:24
>>529
Mac OS Xって NFD じゃなかったっけ?
1.6以降なら java.text.Normalizer あるから簡単に NFC に変換できる。
1.5以前は知らん。あと NFC に変換してもフォントが対応してるか俺は知らん。
538:デフォルトの名無しさん
07/06/26 17:41:34
そもそも"UTF-8の濁点入りの文字列"ってUnicodeでいったらどこの番地?
charsetとencoding混同してる時点で伝わってないかと。
539:デフォルトの名無しさん
07/06/26 18:26:19
むずかしいことはわからないが、リッチクライアントが待望される現在、
Swingがいまひとつ冴えないのは何でだろう。素人的に考えるに、次の
2点だと思う。
(@)開発ツールあまりに貧弱
VisualEditorというものを使ったが、遅くて快適に使えない。
ちなみにメモリ1G。かつてのVisualBasicとどうしてもくらべて
しまうが、なぜこれほどの差があり、差がちじまないのか。
(U)見栄えが今ひとつ
フォントなど見栄えが悪い。アンチエイリアス「java -Dswing.aatext=true」
なども使ってみたが今ひとつ。
(いちいち引き合いにして悪いが、従来のVBでつくった画面にくらべると
そう感じざるをえない)
それ以外にも少し機能が貧弱な面があるが、少なくともこの2点が
改善されたら、俺は積極的に使いたいと思う。
フリーソフトニいろいろケチをつけて申し訳ないが・・
540:気まぐれアナスイ
07/06/26 18:43:35
>>539
開発し易いsoft.と云うのは構成配置を覚えるにはいいですが?
そのsoft.を使用し作成されたapplication.と云う物は、
必ずsoft.に依存します… 当たり前に規約にも影響する物です。
541:デフォルトの名無しさん
07/06/26 18:49:31
>>539
何故Netbeansを使わない。
そして、aatext=trueは、・・・・
まずは、>>539の知識を広げるところから始めた方が有用そうだ。
Swingの表現力を見るために、V2Cを見てみることをおすすめします。
542:デフォルトの名無しさん
07/06/26 18:57:12
フォーカスの順序とかもっと簡単に指定できないかなあ。
結構お客さん、こだわるんだよなあ。
543:デフォルトの名無しさん
07/06/26 19:02:59
aatext=trueはsunの5.0しか効かない。それに今はデフォで有効だろう。
さらに引数与えても捨ててるはずだけど。
LCDテキスト用AAアルゴリズムが追加されたけど実行後にプログラマが
最適なアルゴリズム選ぶ手段がjavaには無い事ない?
javaらしいって言ったらSwingの描画は全てJava2DだからJava2Dでできることは全て
GUIへフィードバックできるよね。
544:デフォルトの名無しさん
07/06/26 19:05:59
>>541
V2Cを見ました。
すばらしい!
たぶんソースコードは公開されてないんでしょうね
545:デフォルトの名無しさん
07/06/26 19:06:08
Swingが流行らないのは、単に作るのが面倒だからじゃね?
プラットフォーム互換性を持つ反面、使いづらいレイアウトマネージャ、
デザパタの教科書に使えるくらい美しい(と言われる)が、取っつき悪いクラス設計、
そして優れたGUIデザイナといわれるNetBeansがマイナー扱い。
業務でJava GUIクライアント作ったんだが、
他の連中がメンテできない。正直公開している。
ま、他の連中のスキル不足とかノウハウ共有が悪いとか、
他に理由はあるんだけどさ。
546:545
07/06/26 19:07:09
公開じゃねえ後悔だ。orz
547:デフォルトの名無しさん
07/06/26 19:09:55
>>541
VisualEditorを使った理由。
Eclipseを使っていたから。
たまたま市販の参考書が多かったから
今後はNetbeanにシフトしたいな
SUN純正だし
548:デフォルトの名無しさん
07/06/26 19:17:57
>デザパタの教科書に使えるくらい美しい(と言われる)が、取っつき悪いクラス設計
GUIは中途半端なMVCだけどな
549:デフォルトの名無しさん
07/06/26 19:28:17
>>540
ユーザインタフェース(要は画面)をつくる場合コードからガリガリ書く
のはばかばかしいので、マウスのドラッグ&ドロップで簡単に画面アプリを
作成できる開発支援ツールがあれば大変重宝します。
特にエンドユーザーに見せるため一度しか使わないプロトタイプ画面
などはそうやって即効で作成したいところです。
当然本開発になっても仕様変更など生産性は著しく向上します。
ところがツールで生成したコードが著しく汚くて冗長だと、コード
のメンテナンス性が低くなり、ツール使用によるメリットが半減して
しまいます。ツールに依存していても、コードを判読するケースは
あるからです。
つまりツールが自動生成するコードは、まるで有能なプログラマーが
一から開発したかのように合理的で明快なコードである必要があります。
そうでないとツールは普及しないでしょう
550:デフォルトの名無しさん
07/06/26 19:53:05
レイアウトマネージャが使いにくいって・・・
VBとかのほうが苦労するだろ
絶対座標マンセーならかまわんが、ウインドウリサイズとか対応するのきついぞ
そもそもJavaでGUI作るのにVEって・・・
あれはSwingやJavaのGUIを陥れるために作られたものと考えるくらいがちょうどいい
551:デフォルトの名無しさん
07/06/26 20:33:31
仕事でNetBeans使ってる人って結構いる?
552:デフォルトの名無しさん
07/06/26 20:39:46
結構いると思う
5.0からは複数のプロダクトで使われてるのみてる
大手はRSAとかだけど重すぎてきつい
553:デフォルトの名無しさん
07/06/26 21:32:39
>>551
うちの奴らはGUIの作成のみに使ってる。他はEclipse使ってるみたいだが。。。
Swing流行らせるためには、まずはNetBeansが機能も知名度もEclipse並に
なってもらわないとだめだね。
554:デフォルトの名無しさん
07/06/26 21:40:43
日本だとNetBeansの動きがやや鈍いね
海外は動きが速い
555:デフォルトの名無しさん
07/06/26 21:49:24
本屋にくだらないEclipse本があふれてるからねー
海外だとそこらへんの事情も違うのかな・・・
556:デフォルトの名無しさん
07/06/26 21:56:01
まずはJREをどう抵抗少なく配布するかじゃないか?
結局ここが一番のネックに感じる。
launch4j に JRE 同梱して、
「exe 叩けばOK」な形で配布すると
割と抵抗なく受け入れてもらえるんだが、
人としてこのファイルサイズはどうなのって感じが。
557:デフォルトの名無しさん
07/06/26 22:14:40
gcj使ってるひといる?
558:デフォルトの名無しさん
07/06/26 22:22:23
>>556
アプリとして有用であればランタイムが大きくても気にしない
のが正解かと
559:デフォルトの名無しさん
07/06/26 22:49:47
>>556
Consumer JREがどうなるか気になるね。
軽量化してくれればJRE同梱も納得できるサイズになるかも。
560:デフォルトの名無しさん
07/06/26 22:56:28
>>558
Delphiも結構デカくなってたしなあ・・・。
561:529
07/06/26 23:16:16
Mac板から帰ってきました。
NFCとNFDについて勉強してきたんで、なんでこんなことになるか
理解できました。
ファイル名を扱うツールを作ってるんですが、ファイル名を取得して
テキストエリアに表示するサンプルを作って試したら問題が再現しました。
以下、サンプルコードです。
562:529
07/06/26 23:16:56
package test;
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class DakuonTest {
public static void main(String[] args) {
try {
JFrame frame = new JFrame();
JTextArea text = new JTextArea();
frame.getContentPane().add(new JScrollPane(text));
File[] files = new File(args[0]).listFiles();
for(int i=0; i<files.length; i++) {
text.append(files[i].getName() + "\n");
}
frame.pack();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
563:529
07/06/26 23:22:03
第一引数のパスのディレクトリのファイル一覧を取得し、
1行に1ファイル、テキストエリアに表示しています。
「ピクチャ.png」があった場合、
Java 5の場合、ピは1文字で表示されますが、カーソルはずれてます。
Java 6の場合、ヒ゜と表示されます。
564:529
07/06/26 23:34:10
ついでですが、濁点の入る文字が三つ以上続くファイル名でJava6の場合、
濁点がずれて表示されます。
「ががが.txt」
の場合、
「か゛かか゛゛.txt」
と見えます。
Appleのバグレポートにあげようかと思ったんですが、こんなもんどうやって
英語で説明したものか・・・
565:デフォルトの名無しさん
07/06/26 23:35:58
>>563
>>536 が言ってるフォントレンダラの問題なんじゃないかと推測。
1.5 -> Quartz という Mac 本来のエンジン使ってるので、NFD でも 一文字として表示する、
けど Java と Quartz の連携が中途半端で文字の大きさとかの情報が渡ってなくって
カーソル位置がずれる。
1.6 -> Sun のエンジンは NFD は 別々の文字として表示する。
あくまで推測だから本当のところはわからんけど。
566:デフォルトの名無しさん
07/06/26 23:40:06
1.5までは合成文字未対応だから、1.6でjava.text.Normalizerを
通すのがまっとうな解決法だろうなぁ。
567:566
07/06/26 23:41:05
いや、比較する訳じゃないし、これはあくまで描画上の問題ですね……
568:デフォルトの名無しさん
07/06/26 23:56:10
比較する訳じゃないのに、Normalizeされた文字列を
表示しようとするのが間違い。
MacのFSのUTF-8はNormalizeされてるので、取ってきた後
deNormalizeしてから表示するべき、ってことなのかなー。
569:デフォルトの名無しさん
07/06/27 00:00:03
macオワタ
570:デフォルトの名無しさん
07/06/27 00:03:58
macは知らんがレンダラのフォントの扱いの問題?
appleこういうの多いよね。
571:529
07/06/27 00:29:08
とりあえずAppleに「直せや」ってねじ込んで、駄目なら568さんの方法で
自分のコードを改修しようと思います。
その場合Java5については諦めるしかなさそうですね。
ついでなんでさらにMacのSwingについてぼやきます。
日本語キーボードを使っていると、KeyEventのgetKeyChar()とgetKeyCode()の
戻り値が矛盾します。
英語と日本語キーボードで配置が変わらない数字やアルファベットのキーなら
問題ないですが、記号だとgetKeyCode()の値がおかしいです。
たとえば@キーの場合、getKeyChar()は'@'を返しますが、
getKeyCode()はKeyEvent.VK_OPEN_BRACKET(0x5B)を返しました。
キー操作の多いアプリで、キーコードとアクションを関連づけてるんで
しゃれになりません。
バグレポートは投げておきましたが、なんでこんな基本的なバグが
何年も放置されてるんだと・・・
572:デフォルトの名無しさん
07/06/27 01:52:29
おんなじ現象で困ってる人
URLリンク(www.starseed.ne.jp)
573:デフォルトの名無しさん
07/06/27 02:08:00
mac版はアップルが実装してるからなぁ・・・
VMが昔はたくさんあったが今は淘汰されてSunのばかりになったことも移植性があがった原因なんだよな
しかしLinuxとWindowsは問題ないというのが歯がゆい
574:デフォルトの名無しさん
07/06/27 08:54:46
VEでjspinnerって入力できるの?
575:529
07/06/27 09:21:07
>>572
すんません、それ僕です。
576:デフォルトの名無しさん
07/06/27 09:37:18
>>574
Choose Beanすれば何でも可
577:574
07/06/27 09:43:30
>>576
なるほど、ありがとうございます。
578:574.
07/06/27 09:56:55
連続質問すいません。
JSpinnerで入力した値を取得したらNullPointExceptionが出てきて困っています。
JSpinnerは
JSpinner SP_Date = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH ));
SP_Date.setBounds(new Rectangle(147, 191, 113, 21));
SP_Date.setUI(new BasicSpinnerUI());
SP_Date.setModel(new SpinnerDateModel());
という感じで作成し、
String TestDate = SP_PurchaseDate.getValue().toString();
で取得しようとしているのですが…
579:デフォルトの名無しさん
07/06/27 10:03:28
setBounds・・・ゴクリ
580:デフォルトの名無しさん
07/06/27 12:43:57
>>578
JSpinnerの使い方間違ってね?
・JSpinnerのコンストラクタにSpinnerModel指定したのなら、setModel()は不要
・SpinnerDateModel使うのなら、モデルに対してgetDate()すればDate型で値もらえる
それと、変数名は小文字で始めようぜ。Javaの流儀だ。
581:529
07/06/27 22:24:31
もはやSwingと関係ないんですが、MacのJavaでかなり衝撃の事実が
発覚したんで書きます。
new File("ががが.txt").createNewFile();
で作られるファイル名が「か゛かか゛゛.txt」になります。
あと、564に書いたことは間違っていて、
「ががが.txt」が「か゛かか゛゛.txt」と見えるのではなく、
Javaで「ががが.txt」を作ると「か゛かか゛゛.txt」が出来る、という話でした。
ひどすぎる・・・
Java6の場合、
new File(Normalizer.normalize("ががが.txt", Normalizer.Form.NFD)).createNewFile();
と書くと正しいファイルが作れましたが、多分Java5だと
どうしようもないんじゃないでしょうか。
スレと関係なくてすみません。
582:デフォルトの名無しさん
07/06/27 23:16:12
普通に日本語使っただけでNormalizerが必要ってのもおわっとるな
Mac対応はやめよう
LinuxとWindows、Solarisだけでいいや
583:デフォルトの名無しさん
07/06/27 23:25:53
>>581
変な挙動だね……
ががががが.txt みたいに「が」の個数増やすと、どーなるんだろとか
がぎぐげご.txt みたいに濁点は付いてるけど別の字の場合とか
興味があったり
584:デフォルトの名無しさん
07/06/27 23:28:15
macオワタ\(^o^)/
585:529
07/06/27 23:42:19
>>583
実験してみました。
がががが.txt -> ががかが?.txt
ががががが.txt -> ががかかが??.txt
がががががが.txt -> がががかかが??.txt
がぎぐげご.txt -> がぎくけご??.txt
がぱが.txt -> がはか??.txt(最後の「か」に半濁点付いた後に濁点があります)
がぱがぱ.txt -> がぱかば?.txt(最後のばの後に半濁点が付いてます)
なんか頭痛くなってきました・・・
586:529
07/06/27 23:44:53
すんません、コピペじゃ駄目みたいなんで書き直します。
がががが.txt -> ががかが゛.txt
ががががが.txt -> ががかかが゛゛.txt
がががががが.txt -> がががかかが゛゛.txt
がぎぐげご.txt -> がぎくけご゛゛.txt
がぱが.txt -> がはか゜゛.txt(最後の「か」に半濁点付いた後に濁点があります)
がぱがぱ.txt -> がぱかば゜.txt(最後のばの後に半濁点が付いてます)
587:デフォルトの名無しさん
07/06/28 05:20:04
>>586
ソースの文字コードだけど何使ってる?
コンパイルする時に、-encodingオプション指定すればよくなくね?
WinのコードとMacのコードは違うしそこらへんの問題じゃなくて?
588:デフォルトの名無しさん
07/06/28 09:37:16
String s = "\u304c\u304c\u304c\u002e\u0074\u0078\u0074";
System.out.println(s);
new java.io.File(s).createNewFile();
をwinのJDK5でコンパイルして、バイトコードをmacに持っていってJDK5環境で実行すると、
println表示は「ががが.txt」だけど、作成されたファイル名は「がかが゛.txt」になるね。
macはサブで、あまり本格的にjavaでいろいろやったりしてなかったんで、
macのjava実装がこんなもんだということにちょっとびっくり。
589:574.
07/06/28 09:50:31
>>580
ありがとうございます。
getDate()ですね。
あと、変数名おかしいのも指摘していただいてありがとうございます。
またひとつ質問があるのですが、
JSPinnerで 日付のみを表示することって可能でしょうか?
2007/06/28 00:00:00 という表示を
2007/06/28 という表示にしたいのですが…
590:588
07/06/28 10:22:52
分解後のリテラル"\u304b\u3099\u304b\u3099\u304b\u3099\u002e\u0074\u0078\u0074"だと、
ファイルとして「ががが.txt」が生成されるけど、逆にwin環境では化けファイル名になる。
もしかしてmacでNormalizerを使って正しいファイル名を生成できたとしても、
それをwinに持ってきて正しいファイル名にはならない?
うちはJDK5環境のままなんでNormalizer周りを確認できないけど。
591:デフォルトの名無しさん
07/06/28 10:38:04
>>590
> 逆にwin環境では化けファイル名になる
NFD使われた程度で化けるならWin側にも問題はあると思うけどね。
NFCが正しいユニコードってわけじゃないし。
まぁ、>>586 のはバグだろうけど。
592:588
07/06/28 10:46:23
>>589
JSpinner#setEditorを使って、
setEditor(new JSpinner.DateEditor(sp, "yyyy/MM/dd"))
593:デフォルトの名無しさん
07/06/28 10:49:40
名前欄が……orz
594:589
07/06/29 00:15:08
>>592
ありがとうございます。できました。
でも次はデータを取得したらなぜかぬるぽになる・・・
sp.getValue().toString() とかやってみたのですが…
595:デフォルトの名無しさん
07/06/29 00:36:31
commitEdit しないと値が確定しないからぬるぽなんじゃね?
596:デフォルトの名無しさん
07/06/29 00:37:53
ソースさらさんとわからん
597:デフォルトの名無しさん
07/06/29 00:40:59
>>594
spがnullなのかsp.getValue()がnullなのか。
データ取得のタイミングが早過ぎてスピナがまだ構築されていないとか。
試しにこういうのを作ったけど普通に取得できたよ。
JFrame f = new JFrame();
f.setLayout(new java.awt.FlowLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JSpinner sp = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH ));
sp.setEditor(new JSpinner.DateEditor(sp, "yyyy/MM/dd"));
sp.setUI(new javax.swing.plaf.basic.BasicSpinnerUI());
f.add(sp);
JButton b = new JButton("A");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(sp.getValue());
}
});
f.add(b);
f.pack();
f.setVisible(true);
598:594
07/06/29 00:47:44
>>595
>>596
ありがとうございます(涙
>>597
うわマジありがとうございます(号泣
さっそくやってみます!!
599:529
07/06/30 10:08:36
遅レスですが。
>>587
ソースはShift_JISですが、.classファイル中では変換されちゃってNFCなUTF-8の
コードで記録されてるんで関係無いっぽいですね。
MacのファイルシステムはNFDでファイル名持ってるけどNFCのファイル名渡されると
NFDに変換するみたいなんですが、Java VMのそこら辺の実装にバグがあるっぽいです。
>>591
Windowsは最初っからNFCのファイル名のみを渡されるのが前提で、
NFDのファイル名をNFCに変換する機能とかが無く、NFDの濁点のフォントを持ってないんで
化けるみたいです。
まあ、仕方ないかと。
Appleに報告したら1日で返事が来て追加情報を求められました。
さすがにやばいと思ったんでしょうか。
あと、無理矢理Swingに話を戻すと、JTextComponentはNFCみたいなんで、
自分のアプリではファイル名はNFCで扱い、java.io.Fileを生成するときだけ
MacではNFDに変換するようにしました。
600:デフォルトの名無しさん
07/06/30 14:12:28
クラスファイル内のエンコーディングはUTF-8だったのか
601:デフォルトの名無しさん
07/06/30 15:56:39
>>600
だからsunのJDKの実装ではReaderのデフォエンコーディングがUTF-8なんだったはず。
602:デフォルトの名無しさん
07/07/02 17:46:19
JFrameから他のJFrameのボタンを押すことって可能でしょうか?
今AとBという画面を作って、Bに検索窓を作って、クリックした内容がAウィンドウのテキストフィールドに反映するように
しているのですが、そこからさらにBウィンドウの「確定」ボタンを押すと、Aウインドウでも「確定」ボタンを押したのと同じ状況にしたいのですが…
603:デフォルトの名無しさん
07/07/02 18:07:29
普通にそのロジックが入ったメソッドを呼べばいいだけでは?
イベントの中ではそのメソッドを呼ぶようにするだけ
Swingの中で押したように動作させるという意味ならそのまま命令があるけど、APIマニュアルをよく見てみよう
604:594
07/07/03 11:12:10
>>597
すいません、spがnullになってしまいます。。。
EclipseでgetJContentPane()に自前で以下のコードを追加したのですが…
JSpinner sp = new JSpinner(new SpinnerDateModel());
sp.setUI(new BasicSpinnerUI());
sp.setEditor(new JSpinner.DateEditor(SP_checkDate, "yyyy/MM/dd")) ;
jContentPane.add(sp);
そして、ボタンを押したときのコードはこれです。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date spData = sdf.parse(SP_checkDate.getValue().toString());
なぜかspがnullになっています。。。
605:デフォルトの名無しさん
07/07/03 12:28:07
>>604
Swingの前にJavaの勉強した方がいいぞ。
>>597のコードを、お前のコードにそのまま埋め込んでもダメ。
意味を理解しろ。
JSpinner.DateEditorのコンストラクタの引数は、
setEditorを呼び出すJSpinnerオブジェクトを指定する。
>>604では、JSpinner.DateEditorのコンストラクタで指定したJSpinnerと
setEditorを呼ぶJSpinnerが異なっている。
それと、以前のアドバイスをまるで無視してるな。ちゃんと読んでるか?
SpinnerDateModel#getDate()でDate型で取得できると言われたのに
無駄にSimpleDateFormat使ってDate→String→Date変換してるし、
変数名があいかわらず変だったりするし。
606:594
07/07/03 13:46:28
>>604
変数名の修正が中途半端になっていました・・・すいません。
Date型で取得せずにStringで取得してたりダメダメなので、もう一度出直します…
607:デフォルトの名無しさん
07/07/03 14:57:06
>>594 がんがれ
608:デフォルトの名無しさん
07/07/03 17:16:40
VisualEditorでのデフォルトのフォントって変更できますか?
いつも太字のDialog,12を手動でぽちぽち変更しているのですが…
609:デフォルトの名無しさん
07/07/03 18:35:49
実行時だけ素敵になれば良いのであれば
>>483 辺りを参照するヨロシ。
610:デフォルトの名無しさん
07/07/04 01:14:58
commonsのsmtp関連って使っているひといますか?
使おうと思ったけどエンコード思うようにいかなくて
javax.mailの方に手を出したら結局そっちだけで用が済んでしまい
わざわざcommons使うまでもなかったっていうか・・・
611:デフォルトの名無しさん
07/07/04 01:15:44
誤爆しますたスマソ
612:594
07/07/04 12:11:32
やっと取得できるようになりまいた!!
DataModelが必要だったのですね… ちゃんと読んでなくてすいません。ありがとうございます!
613:デフォルトの名無しさん
07/07/04 12:12:23
>>609
やっぱりVE上でもヨロシくしたかったのですが…
VE以外のGUIエディタなら可能?
614:デフォルトの名無しさん
07/07/04 16:25:33
eclipse+swingでGUIをふんふんふん〜って作っていて、
いざエクスポートして、問題なく起動でしたと思ったら、
なぜかDBとの通信に失敗している。
エラー内容をみるとjava.lang.NullPointerException
開発時には普通に実行できたのに、
jarにエクスポートしたらDBと通信できなくなる場合ってあるのでしょうか?
JDBCはちゃんとclasspathがあるとこに置いてます
615:デフォルトの名無しさん
07/07/04 17:09:10
だからその例外が発生している場所をさらさんとダメだとなんど・・・
616:デフォルトの名無しさん
07/07/04 17:25:13
>>614
Swingというかスレ違いな気がするが、一応回答。
実行可能jarから起動すると、CLASSPATHや-classpathオプションは無視される。
代わりにMANIFEST.MFのClass-Pathエントリに書くこと。
これ以上の助言が欲しかったら、その例外の発生箇所を加えて
Java質問・相談スレに行け。
617:デフォルトの名無しさん
07/07/04 17:31:57
>>616
無視されないよ
なにわけのわからんことを・・・
618:デフォルトの名無しさん
07/07/04 17:51:03
>jarにエクスポートしたらDBと通信できなくなる場合ってあるのでしょうか?
ある
619:デフォルトの名無しさん
07/07/04 18:18:05
クラスが見つからなかったらふつうは、NoClassDefFoundだろ・・・
>>614
eclipse使ってるなら、jarファイルをデバッガ経由で起動してみたら?
620:614
07/07/04 18:56:44
>>616
いけましたよ!! ギガントありがとう!!
621:デフォルトの名無しさん
07/07/04 21:33:41
>>617
URLリンク(java.sun.com)
ドキュメントを読む習慣を付けようぜ。
622:デフォルトの名無しさん
07/07/04 21:49:10
-jar使うのかよ
普通は使わんし、使うならマニフェストファイルに書くの普通だろ
Swingと何も関係ないやんか
623:デフォルトの名無しさん
07/07/04 22:00:11
スレ違いではあるが
>>622
とことん読まないね。
URLリンク(java.sun.com)
>デスクトップ上で JAR ファイルをダブルクリックすれば javaw -jar により JAR ファイルが自動的に実行されます。
624:デフォルトの名無しさん
07/07/04 22:04:36
ダブルクリック起動なんて使い物にならんよ
オプション設定できないから
625:デフォルトの名無しさん
07/07/05 00:43:07
Windows Explorerを否定する617=622=624に脱帽
626:デフォルトの名無しさん
07/07/05 00:54:08
最近のGUIシェルならむしろダブルクリックで
関連付けされたプログラム実行の方が一般的だろ。
自分を正当化してかみつきたいだけの馬鹿はスルーしとけよ。
627:デフォルトの名無しさん
07/07/05 11:41:18
>>624
lauch4j
628:デフォルトの名無しさん
07/07/05 12:00:32
> 625-626は624のいいたいことわかってるのかな
629:デフォルトの名無しさん
07/07/05 13:08:40
そのソフトがGUIなら起動後にオプション設定して再起動が今じゃ普通だが
それを回避するためにコマンドライン引数受け付けるのもあるけど、あくまでも救済処置だろ。
今となっては。
630:デフォルトの名無しさん
07/07/05 13:27:57
>629は、わけがわかってないと見た。
631:デフォルトの名無しさん
07/07/05 13:43:14
>>629
たぶんアプリケーションのオプションではなくJVMオプションの類の話をしてると思われる
632:デフォルトの名無しさん
07/07/05 14:47:03
関連付けでオプションも設定しておけばいいんじゃね?
633:デフォルトの名無しさん
07/07/05 14:53:28
起動するときにアプリにオプションを渡さないといけないのはCUIでGUIではあまりないと思うが
634:デフォルトの名無しさん
07/07/05 14:57:18
JavaのVMは別
635:デフォルトの名無しさん
07/07/05 15:07:49
オプションといってもVMのオプションね。
システムプロパティを指定する-Dや、
VMの種類を選択する-clientや-serverとか、
メモリ割当プールの最大最小サイズを指定する-Xmxや-Xmsなど。
今のところ、実行可能Jarをダブルクリックでは、
これを個別指定することはできない。
まあただ、-clientや-serverはCPUやアーキテクチャによって
自動選択されるし(おおよそではあるけど)
-Xmxと-Xmsも、Java6からは規定値が64MB/2MBではなくなり、
物理メモリに応じた値に変わるようになった。
URLリンク(java.sun.com)
-Dやその他のVMオプションは無理としても、
実行可能Jarの手軽さを全否定するほど、使えないってことは無いと思う。
636:デフォルトの名無しさん
07/07/05 20:26:11
GUIアプリほどオプションが必要。
SwingやJavaの動作が速くなったとはいえ、デフォではGCによる停止時間が長すぎるので
使い物にならないのさ。
あくまでも快適に動くアプリはチューニングされたオプションが前提。
マニフェストファイルにオプションがかけないのでここは厳しいんだよな。
WebStartもメモリだけしか対応してないので厳しい。
普通の人は2,3秒もGCでGUIがとまってたら使わないと思う。
637:デフォルトの名無しさん
07/07/05 20:28:14
>>635
6では単純なサーバークラス検出動作からかわったの?
638:デフォルトの名無しさん
07/07/05 21:28:25
わかった。
VMのチューニングしないとまともに動かないような、リッチでヘビーなGUIアプリはお前に任せる。
俺は、VMのチューニングが不要な、チープでライトなアプリ作って、実行可能jarで配布するよ。
ところでV2C使ってると、クライアントサイドJava & Swingもいいもんだと思えてくる。
もっとも、あれは作者さんのがんばりに寄るところが大きいのかな。
HTMLビューアは自作してるそうだし。
639:デフォルトの名無しさん
07/07/05 22:25:02
V2CだってデフォだとGC時にあほみたいに重くてつかえんだろ・・・
640:デフォルトの名無しさん
07/07/05 22:46:47
GCが一瞬で終わるウチの環境はハッピーなんだな。
ガンガレ639。お前には未来とVMチューニングがある。
641:デフォルトの名無しさん
07/07/06 02:48:48
デフォでGCで2,3秒とまるって、どんなアプリをどんな環境で使ってるんだろう?
Swingで最重量級といえるNetBeansでも、そんなに止まることはないが。
642:デフォルトの名無しさん
07/07/06 07:00:10
とりあえずOSはWindows 98だろうな。
643:デフォルトの名無しさん
07/07/06 20:16:52
IntelCore+XPでNetBeans5.5.1も2,3秒とまるよ
コンカレントGCに変更すれば大丈夫だけど
644:デフォルトの名無しさん
07/07/06 21:46:12
メモリがバカみたいに少ないんだろうか
645:デフォルトの名無しさん
07/07/06 22:02:26
メモリは1.5GBだーね
glassfish立ち上げたりDB立ち上げると1GBじゃたりないよね
NetBeansはデフォだとまったくメモリが足りないから増やしてるさ
もしかしてみんなヘビーにNetBeansつかってないの?
646:デフォルトの名無しさん
07/07/06 23:37:13
ヘビーに使ってるよ。最近2GBじゃ足りない。
いや、コンカレントにするより、分散GCの周期を1分から延ばすのと
スループット並列GCにする方が快適だったりするかもしれないぞ。
でもIDEのVMとアプリケーションサーバのJVMは分けるよ。
違う性質のアプリなんだから分けた方がチューニングしやすい。
って何の話になってるんだ。
V2Cは、多分に作者さんのコーディングの腕で快適になってるんだと思う。
647:デフォルトの名無しさん
07/07/06 23:54:15
>>646
遅いのはFullGCだけだからFullGCがでなければそれでいいのさ
GCチューニングはJavaでゲーム作ったりしてテストしてるから大丈夫
5ms以下にしていれば体感的に問題はないかな
メモリが多いとパラレルがわりと有効だけど、パラレルにするとスループットはいいけど、
レスポンスが大幅に低下するから、使う場面が結構難しい
マルチコアだからパラレルでいいというよりはGC用にずっとコンカレントだけ動かしてるほうが
いい場合も多いかな
まぁ、バックグラウンドコンパイルとかもあるし、AP鯖やDB鯖も起動するからIDEだけにフルにまわすわけには行かないからね
最近はVM系もよく使うからなおさらかな
ところでAP鯖とIDE、デバッグ起動とそれぞれVMは自動的に分かれるよね?
Tomcatだってデフォだとメモリ少ないし-Xmxいれないとまずうごかん
あーSwingがもはや関係なくなってしまった
648:デフォルトの名無しさん
07/07/07 11:24:32
>645
glassfishとJavaDBはNetBeansと違うVMで走るよ。
649:デフォルトの名無しさん
07/07/07 12:59:29
>>648
何を当たり前のことを
650:デフォルトの名無しさん
07/07/07 15:41:58
glassfish走らせようがJavaDB走らせようが、GCには関係ないってことだ。
651:デフォルトの名無しさん
07/07/07 16:00:02
>>650
マルチプロセスでの動作を考慮ってことだろ。
652:デフォルトの名無しさん
07/07/07 19:59:56
とりあえずSwing関係ねーから他所行けや
653:デフォルトの名無しさん
07/07/24 12:16:09
eclipseを使ってGUIをつくりたいんですがサンプルファイルの
import javax.swing.*;
public class Sample1 extends JFrame{
public static void main(String[] args){
Sample1 frame = new Sample1();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds( 10, 10, 300, 200);
frame.setVisible(true);
}
}
という簡単なものを表示してみようと思ったのですがサンプルどうりに300,200の
大きさのウインドウが表示されず左上隅に小さいウインドウが表示されるだけです.
なぜこうなってしまうのでしょうか?
654:デフォルトの名無しさん
07/07/24 13:30:36
こちらの環境では上手く動いてるっぽいよ。OSはXP。
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode, sharing)
気休めだけど setLocation(int, int), setSize(int, int) とかも試してみたら?
655:デフォルトの名無しさん
07/07/24 13:52:23
>>653
Swingではやってはいけないコーディングなのがきになるが、それどこのサンプルなの?
656:デフォルトの名無しさん
07/07/24 14:21:25
>655
なんかまずいか?
657:デフォルトの名無しさん
07/07/24 14:22:08
>>655
URLリンク(www.javadrive.jp)
ここを参考にやったんですが出来ません.
>>654
1.6.0_02を使っているけど出来ませんxx
658:デフォルトの名無しさん
07/07/24 17:09:02
setMaximumSize, setMinimumSize, setPreferredSize, setSize
659:デフォルトの名無しさん
07/07/24 18:00:31
import javax.swing.*;
public class Sample1 extends JFrame{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Sample1 frame = new Sample1();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds( 10, 10, 300, 200);
frame.setVisible(true);
}
});
}
}
ウインドウマネージャ次第でフレームは再配置やリサイズされるかもしれないしな。
>>658のようないろいろなヒントをマネージャに与えれば言うことを聞いてくれるかも。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5098日前に更新/197 KB
担当:undef