Java低速GUI Swing 5at TECH
Java低速GUI Swing 5 - 暇つぶし2ch596:デフォルトの名無しさん
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のようないろいろなヒントをマネージャに与えれば言うことを聞いてくれるかも。

660:デフォルトの名無しさん
07/07/27 00:38:57
ボタンを押すなりしてイベントが発生したときにコンポーネントの大きさや
位置を変えたり、非表示だったのを表示するようにしたりしているのですが、
大きさと、位置が変わってくれません。
デバッグしたところ正しい値はコンポーネントのプロパティに入っているようなの
ですが、、、


661:デフォルトの名無しさん
07/07/27 01:16:14
画面リフレッシュしてる?

662:デフォルトの名無しさん
07/07/27 01:17:14
たぶんpackとかもわからないんだろうなぁ

663:デフォルトの名無しさん
07/07/27 14:24:01
何のLayout使っているのかも重要だから書かないとな

664:デフォルトの名無しさん
07/07/28 01:26:08
モーダルなJDialogをsetVisibleする場合は、invokeAndWaitを使えばよいのでしょうか?

665:デフォルトの名無しさん
07/07/28 02:14:54
>>664
invokeLaterでええやん
例えばボタンとかを押してActionListener#actionPerformedを呼んで
その中からJDialog#setVisibleするのならinvokeAndWaitは使えない

666:デフォルトの名無しさん
07/07/28 10:04:35
>>664
使わなくてもいいよ
AWTスレッドなら

667:デフォルトの名無しさん
07/07/31 12:29:26
やりたい事
・BufferStrategyを使って描画
・フルスクリーン表示
・メニューの表示

CanvasでBufferStrategy使って描画、Canvasを含むJWindowをフルスクリーン表示
フルスクリーン画面でJPopupMenuを表示するとCanvasの描画が走るタイミングでJPopupMenuが消える

JPopupMenuをJInternalFrameで実現してJDesktopPaneとの組み合わせにしてもダメでした。
BufferStrategyを使わなければ実現出来るのに・・・。
ゲーム作ってる人で同じ悩みに直面した人いませんか?

668:デフォルトの名無しさん
07/07/31 13:25:18
>>667
JPopupMenu#setLightWeightPopupEnabled(boolean) で false にしろとかって話でなくて?

669:デフォルトの名無しさん
07/07/31 14:00:11
>>668
はやり、消えます。

BufferStrategyからgetDrawGraphicsしたGraphicsでMenuを描画すれば良いのでは
と思いついたのですが描画は出来ても機能せず。

フルスクリーンじゃない時はMenuがCanvasの上に表示されるので
フルスクリーン+BufferStrategyの組み合わせがどうにも悪いのかなと・・・。

670:デフォルトの名無しさん
07/07/31 14:00:35
だからお約束のようにAWTとSwingまぜるなと

671:デフォルトの名無しさん
07/07/31 14:10:17
>>670
JWindowからcreateBufferStrategyしてもダメでした。

672:デフォルトの名無しさん
07/07/31 14:13:51
JPopupMenuがSwingだからこれを使ってはダメ

673:デフォルトの名無しさん
07/07/31 14:34:53
>>672
部品を全てawtに統一しJPopupMenuの変わりにDialogを使用したところ無事実現できました。
事象が上手く理解できていないので今からソースを見て理解を深めたいと思います。
ありがとうございました。

674:デフォルトの名無しさん
07/07/31 14:50:24
Swingってのはフレームから下を全てSwingフレームワークによってソフトウェア描画する
AWTってのは各種OSなどに描画を任せる

混ぜるな危険ってのはそういうこと
Swingコンポーネントを使いつつBufferedStrategyが使いたいという用途はあまりないと思うので
その場合はSwingフレームワークにあわせること

ゲームなどでBufferedStrategyは使うと思うが、メインループスレッドからバックバッファに描画、
その後repaint発行でいける

この場合注意すべきポイントはrepaintはいつ呼ばれるかわからないということ
つまりトリプルバッファのようにバックバッファが最低2つは必要になる

BufferedStrategyなどでゲームに特化した話題ならゲーム製作板へどうぞ

675:デフォルトの名無しさん
07/07/31 16:31:47
>>667
BufferStrategy の原理上そうなると思う.
昔ちょっと試したときの結論はゲームにメニューバーは付けない(そもそもかっこわるいし)で
ゲーム内にメニューを実装する,でした.

676:デフォルトの名無しさん
07/07/31 17:39:57
AWTでしか実現できない機能なんてあんのか~、しらなんだわ。


677:デフォルトの名無しさん
07/07/31 18:00:20
GLCanvasもそうだけどいわゆるハードウェアべったりな動作を期待したい場合AWTを使うしかない
この仕組みを変えるためにはSwing自体大幅にパイプラインをかえないといけない

で、JOGLに関してはJavaSE6でそうなる予定だったのだが、不具合のためOFFになってしまった
そろそろ標準でJOGLついていてもいいと思うけどね

まともに3D動かそうとすると必須だし

678:デフォルトの名無しさん
07/07/31 18:21:29
swingとawtのFPS比較サイトとかあれば良いのにな。

679:デフォルトの名無しさん
07/07/31 18:31:18
ゲームの話か?
描画内容を反映させるのにBLITが必要なく、垂直同期が取れるAWTのほうが有利
JNIによるダイレクトなレンダリングも期待できる

GUIコンポーネントというのならSwingのほうが将来的にも拡張性的にも有利ではないかと

680:デフォルトの名無しさん
07/07/31 18:41:02
というかBufferStrategyのdoc読んだら重量には効かないのが分かるだろ。

>>677
このバグ自体は昔からあるけどいざ、潰してみたらVGAドライバ由来の物だということが分かったので当分無理。
だから途中でデフォルト無効になったんだし。

これさえ直ればちゃんとGLPanelがつかえるんだよ。
せっかく、JOGLがjavax.*まできたのに・・・。

JOALも標準拡張にしてやってくだせぇ。
ミドルレンジ以上のサウンドカードじゃないとOpenALまともにサポートしてないから無理かな?


681:デフォルトの名無しさん
07/07/31 19:13:05
ところでJava3DとJOGLのちがいってなに?

682:デフォルトの名無しさん
07/07/31 19:53:15
(そのレベルなら)なに気にすることはない。

自分で調べろや

683:デフォルトの名無しさん
07/07/31 21:35:54
ImageからBufferedImageへの変換ってどうやるの?

684:デフォルトの名無しさん
07/07/31 21:37:05
>>683
Java言語から勉強したほうがいいよ

685:デフォルトの名無しさん
07/07/31 21:57:55
>>683
URLリンク(www.amazon.co.jp)
この本の17ページに書いてあるよ

686:デフォルトの名無しさん
07/07/31 21:59:16
>>683
BufferedImage→ Graphics→drawImage
これで分からなきゃ初心者スレ行ってくれ

687:デフォルトの名無しさん
07/07/31 22:06:50
JTableで編集中のセルの行インデックスを取得する方法ありますか?

688:デフォルトの名無しさん
07/07/31 22:07:40
ファイルからロードしたImageだからgetGraphics()でnullになるんだけど、どうすれば・・

689:デフォルトの名無しさん
07/07/31 22:12:10
>>687
APIに載ってるんだが、なんで調べないの?
つ getEditingRow()


690:デフォルトの名無しさん
07/07/31 22:31:30
>>686 ああ、できた。あんがと

691:デフォルトの名無しさん
07/07/31 22:32:46
SwingとAWTを混ぜるなって話だけど・・・jdk7で変わるのかね?

Heavyweight/Lightweight Mixing feature of Java 7
URLリンク(forums.java.net)

ごめん内容いまいち追い切れてない。

692:デフォルトの名無しさん
07/07/31 22:44:27
>>691
まだmacはJDK5だと言うのに・・・。

693:デフォルトの名無しさん
07/07/31 22:46:38
そうだったのかw
あんまバージョンアップが早いと
リタイヤするOSが増えそうだな

FreeBSDも5だっけか

694:デフォルトの名無しさん
07/07/31 22:53:32
>>692
6の開発者向けプレビューが去年から更新されてないんだよね。
たぶん4月にはLeopardと一緒に正式リリースを目論んでいたんだろうけど、
Leopard10月になっちゃったし。


695:デフォルトの名無しさん
07/07/31 23:02:50
>>683
BufferedImageってImageインターフェースもってるだろ?
BufferedImageにすってことはどれだけ情報がうしなわれるとか考えた?

696:デフォルトの名無しさん
07/07/31 23:04:40
>>682
で、どっちが活発にメンテされてるの?

697:デフォルトの名無しさん
07/07/31 23:15:09
去年JOGLは1.0がリリースされGLCanvasは現実的に使えるようになった
Windows版しかみてないが、ネイティブ版の8割くらいの速度で動くと思えばよい

1.0GHzで動いていたのと同じように動かすためには1.2GHzくらいが必要

Java3Dはかなり前に試したが、とにかく遅くて使い物にならないことや高レベルすぎるんじゃないかな
ゲーム以外ならJava3Dでいいのかもしれないけど

698:デフォルトの名無しさん
07/07/31 23:34:42
>>697
なるほど。よく分かった。

699:デフォルトの名無しさん
07/07/31 23:37:02
JOGLだとOpenGL専用で、どこでも使えるJavaっぽくないけど、
これ自体がオプションパッケージだから、依存性が強くてもいいのかもしれない。
Java3Dがまだこなれてないんじゃ、しようがないね。

700:デフォルトの名無しさん
07/07/31 23:38:25
>>695 Image.getGraphics()がアンサポート例外出すのがやなんだけど

701:デフォルトの名無しさん
07/07/31 23:46:50
>>699
OpenGLはWindowsやLinux、Solarisなどで動くオープンなAPIだよ
Java3Dは実装選べるけど結局OpenGLかDirect3Dかの二択だしプラットフォームはかわらんよ

sunが自前で全部実装ってのは無理
ビデオチップベンダとの協力が必要だから

702:デフォルトの名無しさん
07/07/31 23:48:51
>>700
オフスクリーン以外で実行したらそれがでるのは正しい動作

それにImageなんて抽象クラスなんだから実装はさまざまだ

703:デフォルトの名無しさん
07/07/31 23:51:33
開発者側で混ぜるな危険をなんとか言ってるのはJava3D/LG3D関係か?

てかJOGL1.0はもう古い。今は1.1.0。
java2DをJOGLのテクスチャに合成するutilが追加されてる。
1.0までだとここらへん自力でやらないとだめだったけど今なら
java2Dで描画できるもんならなんでもJOGLに持っていけるようになったからフォント描画も楽になった。

ビルボード上にテクスチャ貼ってスプライトさせるなら自分でやった方が効率よさそうだけど。

704:デフォルトの名無しさん
07/07/31 23:53:45
>>703
1.0からできるっしょ?どっかかわった?

混ぜるな危険はSwingがでたとき、1.1時代からいわれてるよ

705:デフォルトの名無しさん
07/07/31 23:57:04
>>699
何言ってんだ?JOGLもJava3DもOpenGL使ってるだろ。
それに両方、標準拡張。
万人が使うわけじゃないからJREから外されれてるだけ。
そこらのJNI使った拡張機能とはわけが違う。

706:デフォルトの名無しさん
07/08/01 00:13:53
>>704
そうじゃなくてoffscreen renderingの問題だよ。どうにかなったのこれ?
昔から言われてるのは常識だろ。

>1.0からできるっしょ?どっかかわった?
javadoc嫁

707:デフォルトの名無しさん
07/08/01 00:49:41
>>706
落としてきてあるのだけは確認した
com.sun.opengl.util.j2dパッケージが追加されたのか

いままでもJava2Dからのテクスチャ生成ができたけど、これは動いてる最中も反映されるんか?
毎回getTexture必要になるっぽくみえる

今週末久々にJOGLいじってみるか

問題は激しくすれ違いなことだがJOGLのスレってなかったか

708:デフォルトの名無しさん
07/08/01 03:07:03
なるほど。ためになった。

709:デフォルトの名無しさん
07/08/01 05:49:39
>>707
JOGLにしかない機能・作法が意外とあるのにどこいってもJOGL専用話してる所がないんだよ。
JOGL紹介サイトでもOpenGLの教本に書いてあることくらいしか書いてない。

jogl-demosのソースか洋書あたるのが近道。
国内はJava3Dだらけだ。

710:デフォルトの名無しさん
07/08/01 08:39:42
良スレの予感。

711:デフォルトの名無しさん
07/08/01 10:57:50
>>709
JOGLって作りこみの部分に入るとOpenGLまんまだから迷うことはないけど
たしかにそのセットアップとかTipsとかそういう情報ゼロに近いね

一方JavaのゲームではJOGLしか選択の余地がないから非常に悩むところ
Java2Dのアクセラレーション範囲が狭いことに加え、アルファブレンディングの種類が足りなすぎる

おかげで2D描画もOpenGLが必須になるという・・・

712:デフォルトの名無しさん
07/08/01 11:05:22
今気がついたんだが「LayoutManager2」なんてクラスがあるんだな。
本当にこんなネーミングで良いのか?

713:デフォルトの名無しさん
07/08/01 13:40:12
クラスというかインタフェースだけどな
配置の制約情報オブジェクトをコンポーネントに関連付けるメソッドが追加されたLayoutManager
ネーミングについては確かに投げやりだな

714:デフォルトの名無しさん
07/08/01 23:48:14
SAX2.0なんて2がつくの結構あるぜ

715:デフォルトの名無しさん
07/08/02 01:26:14
>>712

そりゃたしかに投げやりなネーミングだな。ひどい

716:デフォルトの名無しさん
07/08/02 04:06:22
じゃあどんな名前ならよかったんだ?
- AdvancedLayoutManager
- ExtendedLayoutManager
- SuperLayoutManager
- LayoutManagerGreat
- 続・LayoutManager

717:デフォルトの名無しさん
07/08/02 04:23:15
LayoutManager4.0
アナログ的に配置指示

718:デフォルトの名無しさん
07/08/02 10:30:35
>>716
続・LayoutManager に一票

719:デフォルトの名無しさん
07/08/02 11:29:00
ボーランドのライブラリは2がつくのたくさんあったな

720:デフォルトの名無しさん
07/08/02 12:01:51
Extended とか付けたら、もっかい拡張したくなったら名前に困るじゃん。
数字なら 3 とか 4 にすればいいだけで楽。

721:デフォルトの名無しさん
07/08/02 12:54:43
10以上行くと
ソートした時に
XX
XX10
XX2
XX3
.
.
ってなりそう。

722:デフォルトの名無しさん
07/08/02 16:37:38
Win32 API の ~Ex は辛かった。~2 もどうかとは思うが。
そろそろ Swing そのものを根本的に整理して欲しい時期だねえ。

723:デフォルトの名無しさん
07/08/02 17:58:03
Swingで一番やってほしいのが
・定数のenum化
・コレクションフレームワーク利用
・generics利用
・OpenGLパイプライン有効

で作り直してほしいな
互換性とるのは無理だからパッケージをかえてな

724:デフォルトの名無しさん
07/08/02 18:15:14
新パッケージ名はjavax.swing2だなw

725:デフォルトの名無しさん
07/08/02 18:43:39
javax.続・swing パッケージで…

726:デフォルトの名無しさん
07/08/02 19:09:32
JOptionPaneのmessageTypeで指定すると表示されるデフォルトアイコン群は
他のクラスで利用出来ないものでしょうか?

727:デフォルトの名無しさん
07/08/02 19:51:01
>>721
9の次はaにすれば、しばらく問題なし

728:デフォルトの名無しさん
07/08/02 19:55:47
>>726
ひどい方法
class IconRevealer extends BasicOptionPaneUI {
public Icon getIcon() { return super.getIcon(); }
};
IconRevealer foo = new IconRevealer();
new JOptionPane(null, JOptionPane.INFORMATION_MESSAGE).setUI(foo);
//new JOptionPane(null, JOptionPane.ERROR_MESSAGE).setUI(foo);
//new JOptionPane(null, JOptionPane.QUESTION_MESSAGE).setUI(foo);
Icon icon = foo.getIcon();

JOptionPane#getIcon()やiconフィールドはsetIcon()で設定した時用だったんだな

729:728
07/08/02 20:21:29
ソースを眺めるとこう単純にできるがさらにアンドキュメンティッドなひどい方法だ
String propertyName = "OptionPane.errorIcon";
//String propertyName = "OptionPane.informationIcon";
//String propertyName = "OptionPane.warningIcon";
//String propertyName = "OptionPane.questionIcon";
Icon icon = (Icon)sun.swing.DefaultLookup.get(new JOptionPane(), new BasicOptionPaneUI(), propertyName);

730:デフォルトの名無しさん
07/08/02 20:27:27
UIManager.getIcon("OptionPane.errorIcon");

731:デフォルトの名無しさん
07/08/02 20:31:56
素でUIManagerのことを忘れてたorz
BasicOptionPaneUIはUIManagerを介さずに直にsun.swing.DefaultLookupを呼んでるんだな

732:デフォルトの名無しさん
07/08/02 21:26:15
UIManagerで使うキー文字列も明文化されていないから
変えられても文句いえないんだよな。
こーゆーところはpublicな定数なりenum(は増えるから無理か)を
使ってあれば安心して使えるんだが。


733:726
07/08/03 16:54:32
ありがとうございます。
昨日は諦めてアイコンを作ってましたが
使わなくて済みそうです。

734:デフォルトの名無しさん
07/08/03 18:12:41
あの辺のアイコンデータのライセンスってどうなってるんだろうね?
再配布可能なライセンスならアイコン自体もらってアプリに組込めば
明文化されてない使い方しなくてもすみそうなんだけど…

735:デフォルトの名無しさん
07/08/03 20:16:55
URLリンク(java.sun.com)

736:デフォルトの名無しさん
07/08/03 21:39:54
>>735
Thx!

737:735
07/08/04 00:38:56
・・・でもよくみたらJOptionPaneのアイコンは入ってなかったね。ごめんよ。

738:デフォルトの名無しさん
07/08/04 04:47:39
>>737
ほんとだ… インフォメーションアイコン(丸に"i"のやつ)とかあるから
同じかと思ったら別のアイコンだ…

739:デフォルトの名無しさん
07/08/05 08:56:15
BufferedImage.TYPE_INT_ARGB
BufferedImage.TYPE_INT_ARGB_PRE

よく_PREってついてるのあるけど、どう違うの?

740:デフォルトの名無しさん
07/08/05 11:16:41
それは premultiplied alpha 。
RGB 各成分に A 成分が乗算済みであるフォーマット。
例えば 70% の不透明度で描画するとき通常 result = dst * 0.3 + src * 0.7 とやるわけだけど、
_PRE は A 成分が乗算済みだから result = dst * 0.3 + src で済む (src が _PRE で dst がそうでない場合)。

741:デフォルトの名無しさん
07/08/05 12:31:43
よくわかった。ありがとう。

742:デフォルトの名無しさん
07/08/05 20:45:36
問題はSwingと関係ない話だってことだな

743:デフォルトの名無しさん
07/08/05 20:51:44
まぁ、こっちで聞くのは正解な気もするがw

744:デフォルトの名無しさん
07/08/05 20:53:47
AWTのスレってあったっけ?

745:デフォルトの名無しさん
07/08/05 21:00:13
ない

746:デフォルトの名無しさん
07/08/06 10:15:44
>>740-743
Sunのチュートリアルには無かったけど、そういう話(話題)ってどこを参照すればいいの?
できれば日本語で。

747:デフォルトの名無しさん
07/08/06 10:41:30
Java2Dのスレを立ち上げる

748:デフォルトの名無しさん
07/08/06 11:05:27
>>746
URLリンク(java.sun.com)
『このイメージのカラーデータには、アルファがあらかじめ乗算されています』

749:デフォルトの名無しさん
07/08/06 12:37:44
>>748 その翻訳の「意味」が分からなかった。

750:デフォルトの名無しさん
07/08/06 12:41:38
まぁわかりにくい表現だとは思うが
API以前に画像の基礎知識つけたほうがいいんじゃね?

GUIがわかってない人がSwingのマニュアル見てもわからないのと同じように

751:デフォルトの名無しさん
07/08/06 12:55:52
画像処理というよりも、単に画像ファイルを読み込み、コピー、保存する程度。
ImageIOではなくて。

752:デフォルトの名無しさん
07/08/06 19:25:43
独自のポップアップメニューを表示するにはどうしたらいいのでしょうか?
たとえばExcelの色選択メニューみたいな。
枠ナシJFrameを使うとタスクバーに出たり、ウィンドウがちらついたりします。

753:デフォルトの名無しさん
07/08/06 19:39:27
普通の JPopupMenu に独自のコンポーネントを add してみるとか。
単に JPopupMenu のレイアウトマネージャを変えてみるとか。

754:デフォルトの名無しさん
07/08/06 19:41:05
glasspane使うのが正解じゃね?

755:デフォルトの名無しさん
07/08/06 20:39:15
JWindowはどう?
(色選択ならJColorChooserからコンポーネントもってくれば)

756:752
07/08/06 21:35:43
JWindowがよさそうですが、よそがクリックされたらウィンドウ閉じるようにするにはどうするのがいいんでしょう?
JFrameのときは、windowListenerのwindowDeactivatedでdisposeしてました。

757:デフォルトの名無しさん
07/08/07 08:45:37
>>756
その「よそ」って何?
「よそ」が他のコンポーネントならそのコンポーネントのイベントを拾って閉じればいいじゃん。

758:デフォルトの名無しさん
07/08/07 08:50:35
>>757
最初の質問に書いたとおり、ポップアップメニューを作りたいので、よそというのはメニュー以外のことです。
では、元のウィンドウのタイトルバーや、プログラム管理外の領域がクリックされたときのイベントはどうやってとればいいでしょうか?

759:752
07/08/07 09:35:06
プログラム管理外の領域のクリックは、元ウィンドウのwindowDeactivatedでとれました。
あとは、タイトルバーのクリックがどうにかなれば

760:デフォルトの名無しさん
07/08/07 09:58:46
JPopupMenu popup = new JPopupMenu();
popup.add(new JColorChooser());
component.setComponentPopupMenu(popup);
でよくね?
# JPopupMenu isa JComponent

761:752
07/08/07 10:21:52
>>760
それでいけそうですた。
>>753の言うことをちゃんと聞いてればよかった。

762:デフォルトの名無しさん
07/08/07 20:40:22
DelphiでいうところのPaintBoxみたく
paintComponent(Graphics g) にクロージャを引っかけることができるような
カスタムペイントコンポーネントって、ないの?

今はふつー(??)に、JPanel の派生クラスをつくってる。

763:デフォルトの名無しさん
07/08/07 20:45:01
ない。
ふつーは JComponent から派生する。

764:デフォルトの名無しさん
07/08/07 20:51:45
PaintBoxとpaintComponent(Graphics g) は動きがまったく違うと思うのだが

765:デフォルトの名無しさん
07/08/07 21:42:32
>>762
ないんだよねぇ。
それ欲しい。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch