Java低速GUI Swing 10
>>8って実は最近人気のフラットデザインなんじゃね!? 次のjavafxとswingにdate pickerが入るんじゃなかった? >>220
ないみたい。
こっちをFX共用にしとけばよかったのかな。 Swingは失敗したけど、FXは成功するでしょうか
みたいな議論はどのスレでやればいいのでしょうか? JDK-6506617 : Keyboard-lock in swing program on Linux box
という重大なバグを8年以上たった今でも解決する気がないみたいだけど、
どうしてなんだろう。 ちなみに限定的なバグじゃなくてあらゆるLinuxOSで100%再現する。 オラクルはケチで有名なので文句を言われなければ手間暇かけて直そうとしないからですよ >>224
それは本当にJDK側で解決すべき問題なのかい? YES.なぜならswingの領分で、他のコンポーネントにフォーカスを強制的に移して戻したら数回は直る。
そのときにクリックするなど一切せずLinuxへのメッセージはないからだ。
しかしクリックすれば確実に直る。 日本語入力の時に頻繁に発生するから最悪なんだよね
VBOXとかの仮想環境で古いリナックスを使うことが多いけどそのバグが原因でスイングあぷりを使う機会はまずないね
オラクルはウインドーズにしか投資しないつもりだからそのバグが直る見込みは絶対ないよ >>230
ネイティブ環境(非仮想環境)だと出ないん?
まあ、仮想環境でもキーを連続で打てないのは痛いけど。
ちなみに、バグレポートではキー押しっぱなしが再現方法になってるけど
日本語入力だと、どうすると出てる? ubuntu 6.06 ltsだったけど実機でもよく出るよ
再現方法が少し違うから違うバグだろうけどx-window関連だから多分同じバグだろう
特にESCでダイアログを閉じたときフォーカスが戻って来ないのでキー入力がアスキーでも日本語でもテキストが入力されないバグだったかな
ショートカットも効かなくなるからマウスでアプリを終了するしかない(再起動すれば最悪また戻る)
このバグはぐぐると英語サイトがいつくかヒットするけど、swingのアプリは実質ウインドーズ専用と考えたほうがいいだろうね
javafx8 (build 1.8.0-ea-b117)ももうするリリース近いのにubuntu 12.04では日本語入力がまともじゃないからjavafx8も結局ウインドーズ専用になると思う JavaFX jarファイルに固めてダブルクリックしても起動しないんですが仕様ですか?
eclipseからは起動するのに JavaFXを含まないHello Worldレベルのを作って試してみたら? Swing、SWT、ともに起動します
何故かjre7.u45以前のVMを指定したらコマンドラインから起動できることを確認しました
jre7.u45以降のではコマンドラインからも起動できない Swingや選んだのは失敗であった 日本語入力するときが不自然すぎる
JavaFXもくそすぎわろた 同じように日本語入力が不便
せめて SWT を選んでおくべきだった・・・ OSXは知らないけど、WindowsではGoogleIME使ったときが、入力候補の出る場所がおかしい。
ウィンドウの左下に出る。普通、カーソルのすぐ下に出るだろう。 >>230
java 1.6 のソースコードを見るとログを仕掛けてなおそうと頑張ってた形跡がある。
そのログを見たいなら以下で取得可能。
public static Logger focusLog = Logger.getLogger("java.awt.focus.Component");
>>231
キー押しっぱなし→?
Textボックスをマウスクリックでたまにキーフォーカスが死亡する。 ubuntu12.04+ibus+mozcですが、たまにテクストコンポーネントがキー入力を受け付けず、ascii,日本語とも入力できなくなる時が今でもありますよ
しかもnetbeans7使っていても発生するのでswing,javafxを検討してみたり勉強しようと考えないほうがいいと思いますよ(java+linuxではそれぐらい終わってるバグです)
ケチで有名なオラクルの技術力なんてのは企業買収で成り上がっただけなので底力なんてあるはずもなく実力は所詮こんなものです java.awt.im とかちゃんと使ってる人いるのか?
Javaプログラマが日本語入力監視してやらないと、
入力バリデーションとかが期待通りに動かないことがまれによくある。 java1.6以上のJTextAreaなどJTextComponentのline-wrap方式は、
奇妙な位置で折れます。
これを1.5以下の方式に戻す方法があるか教えて下さい。 他の外国語でも同じバグがあるなら修正用ラッパ作る気にもなれるんだけどね… >>243
奇妙な位置で折れることを想定してプログラム書けば全て解決する話
それよりもそのことのためだけに今更1.5以下のJRE使えという方が非常識 たと
えばこんな感じに折れます。
これを想定し
て書くのはしんどいです。 なんだかんだ言ってMicrosoftの素晴らしさを再認識する Javaも大きく育てばもっとSunもOracleも開発に人材をさけたのかもしれん サンの時代ならまだ信用があったから起死回生もありえたけど、クライアント(ウェブ)やモバイルやデスクトップに興味がない今のオラクルじゃ何やってももう無理 >>246
てか、それ英単語の空白部分で折れてんじゃないの?
そもそもそんな不自然な折れ方するバグがあったとしたら世界中の開発者が黙ってないと思うんだがな
しかも1,6以上で出るんだろ?
もし英単語空白部分で折れてんなら、それline-wrapの仕様だよ >>243
http://docs.oracle.com/javase/jp/7/api/javax/swing/JTextArea.html
> JTextArea(Document doc)
> 指定されたドキュメントモデルと、ほかの引数はすべてデフォルト (null, 0, 0) で、新しい JTextArea を構築します。
http://docs.oracle.com/javase/jp/7/api/javax/swing/text/Document.html
> たとえば、前の図のようにドキュメントのコンテンツが「The quick brown fox」というシーケンスの場合、「The」の前の場所は 0 で、「The」の後とそれに続く空白の間の場所は 3 となります。 textコンポーネントってカスタム化したBreakIteratorとか指定できないのか GUIレイヤーにはHTML5/Google Chromeを使えばすべて解決 FX興味あるけどまだSwing主体で使うべきなんだろうな 今の時代、FXっていうと金融のほうの話にしか聞こえない なんかopenjdkにしたら直ったくさい。
CentOS(32bit) jdk1.7からopenjdk1.7にしたらOK
Debian(64bit) open1.6でOK バグの再現方法が分からないのに直ったも糞もあるかよ jdk1.7でもawtのテキスト・コンポーネントってawt.useSystemAAFontSettings=onにしても汚いままだね
java+linuxはやっぱり終わってる テキストじゃなくてリスト・コンポーネントだったか?
とにかくオラクルはawt component全般で直す気もなければやる気ないんだから、awt,swing,javafxでguiをやろうと考えるのは茨の道に入るのに等しい [#JDK-6506617] Keyboard-lock in swing program on Linux box - Java Bug System
https://bugs.openjdk.java.net/browse/JDK-6506617
コメントしまくってプライオリティ上げれば ナオト君とユリコさんしか文句言ってないんじゃあ直されるわけがない linuxデスクトップですらまともに使えないjava+awt+swingなんてのは結局のところwindows専用のguiフレームワークでしょ
ていうかjavaがサンだった頃はまだ可能性はあったが、オラクルになったjavaってのはwindowsデスクトップともども静かに死んでいく運命でしかない
awt,swing,javafxなんていうデスクトップやクライアントものは誰も相手にしないから、バグなんかもわざわざ報告してもらえるはずない Androidうらやまー。
TWLとかLIBGDXとかゲーム系GUIで良いのが出てくればよいのだが androidの寿命が思いの外長いみたいだから、embbed,mobileのjavafxのライセンスは主要なところはどこも買わないだろう
オラクルが欲を出して裁判でグーグルに負けたあたりから、javaはswing,javafxが低速低品質であるだけでなく、desktop/client java自体が終息していたんだなあと思う Product Version
JavaFX Scene Builder 2.0 (Developer Preview)
Build Information
Version: 2.0-b12, Changeset: 8bb7f8e4931d
Date: 2014-01-30 08:10
JavaFX
Toolkit = QuantumToolkit
Pipeline = ES2Pipeline
Hardware acceleration ENABLED
Java
1.8.0-b127, Oracle Corporation
Operating System
Linux, amd64, 3.2.0-58-generic
Copyright ? 2012, 2014, Oracle and/or its affiliates. All rights reserved. もはや一般向け言語じゃないな。
アプレット開発完全に終わった。
ユーザーにコピペ作業させないと動かないフリーソフトって有り得ないだろwww >ユーザーにコピペ作業させないと動かないフリーソフトって有り得ないだろwww
これって何のこと?
開発者側じゃなくて? JavaFXで2chブラウザで作ってみたけどかなりシンプルで扱いやすいライブラリになってて気に入った
これはSwingとかは簡単に駆逐される予感がする 今出向先でswing使わされてるけど糞すぎて死にたい
sdkも1.4使ってるし、いるのか知らんけど
まともなアーキテクトいないと自社内で技術の選定もできねーんだなぁと JavaFXはまだま未熟な印象あるけど相当使える
JavaDocとか見てると3Dとかスマホを意識したメソッド名が散見されるけど、
今後クライントアプリで存在感示せるには十分、強力なライブラリだと思うな >>282
ダイアログは、OSが勝手に扱いを変えるしな… ダイアログ的なものなんか簡単に実装できるもんじゃないの 画面の中央で手前に表示されるか
Enterをおしたら、閉じて、OKの意味を伝達するか
Escをおしたら閉じるか
Tabをおしたら、フォーカスが移動するか ダイアログってそんなややこしい仕様だったの?
ちっさなStageにボタンつけてモーダルで表示するだけだと思ってた
だからみんなダイアログ実装しろしろうるさいんだな プラットフォームによってメタファが違うしライブラリが勝手な解釈して実装がカオスだったりもする ダイアログって出されて嬉しかった記憶がまったくないから
もうダイアログは出しちゃダメっていう決まりでいいだろう
そういうダイアログメッセージメッセージ出す前にボタン押させないようにするとかいろいろあるだろ SwingどころかAWTですら実装しているというのにFXときたら… WPFだって事実上実装してないに等しいので、
「FXはダイアログとか出さない!」
というコンセプトなのでは。 RIA の方向性がそうなのかもな。
htmlからリッチにするとは言ったがそれはviewにおける表現の事であって云々。 すると、ダイアログの今後はどうあるべきなのは提示されないと困るよね。 モーダル・ウィンドウ作れるからダイアログ要らんがな。
実装面倒くさいだけならJFXtrasにひと通りのもんは入ってる。 軽量とか重量とかって何を基準に言ってるんだろうな。 日本では処理が軽いか重いかっていうイメージで間違った使われ方してるけど
heavyweightが環境依存の重いコードガシガシ書くことでlightweightが環境非依存の軽いコード書く事だから本来はコードのポータビリティの話だろ。
会話するとき、間違った使い方してる奴が混じってると会話が噛み合わんってよくあるじゃん。 swingだろうとトップウィンドウがheavyになるって話も実際どこまで理解されてるのだろうね。 javafxはなんでほぼModelのクラスをContorollerって呼んでるんだろ javafxはbindingがあるからsupervising controllerのMVPになるか。 >>300
じゃあなんでPresenterにしなかったのっていう話に javafxはMVPでもpresenter modelでもどっちでも作れるようになってるからcontrollerがpresenterっていう名前だったらおかしいだろ。
それと役割が同じだからじゃね。 署名高すぎ。
なんだよ年5万円って。
趣味でやるなってことか? 相模原メディカルサイト歯科日吉サンテラス歯科藤沢なのはな内科スマイル歯科アイ整形外科亀有 リリオ歯科アクロスみなみの歯科足立ハート歯科新宿くろさか歯科熊本ファミリー歯科伊勢原桜台歯科森林公園滑川モール歯科横浜いちょう歯科小田原めぐみ歯科ホワイトスタイル 質問失礼します。
JTabbedPane に複数の Panel を登録すると、キーボードのカーソル左右でタブを切り替える事ができます。
この機能を無効化したいのですが、どうしたら良いでしょうか? setFocusable(false)でどうだろう >>308
フォーカスは与えたいので少し厳しいですね。
左右で変えられるのは仕様として別のやり方でやってみます。
ありがとうございました。 カードレイアウト使ってタブはボタンかラベルでそれっぽく書けくのは?
JavaFXだとStackPane使うんだけどSwingには相当するものがないね。 javax.swing.FocusManager で KeyEvent.VK_RIGHT / VK_LEFT を無効にすればいいんでね。 へんな2chブラウザみつけた
JavaFXで実装してるんだと
http://www.m9_www.com
使ってみたけど結構重い