Java低速GUI Swing & JavaFX 10
933 :
デフォルトの名無しさん:2013/10/29(火) 23:10:44.12
Comodoってやらかしたことがあったけど存続してたのか。
DigiNotarは潰れたけど。
がんばれロジ子
937 :
デフォルトの名無しさん:2013/11/04(月) 04:47:00.97
SwingのJPanelをまるごと、
JavaFXでエフェクトかけるとかってできる?
あ、解決しましたー
ubuntu 12.04 (x86_64)なんだけど、javafxの1.7.0_45, 1.8.0-ea (b106 dev prev)のtextfieldなどのコントロールの日本語のテキストの入力の実装は、入力しても表示がずれて使い物にならないし日本語は未だ未完成だね。
リリース8が2月?だから開発リミットまで3ヶ月だけど、これじゃあいくら間に合っても、linux版のjavafxの製品の品質はかなり期待できないだろうね。
linux版に投資せずwindow版にばかり投資し、大事なパーツなのにmicrosoft製品にいつまでも依存していると、そのうちmicrosoftからしっぺ返しを喰らうのに、oracleは未だに分かってないようだ。
デスクトップとしてのLinuxなんて、中二病患者ぐらいしか使わないから問題ないよ
今までのサンのswing路線だとそうともいえるんですが、これからのオラクルのjavafx路線ではそうともいえないんですよ。
タッチも一般的になった現在では、従来のキャラクタ・コンソール(端末)だけだったものを、リッチ・コントロールを使って入力(text)と出力(chart)などで分離してインタラクティブに係わるレプレゼンテーションというものを抽象化する目論見(javame8)なので、
javafxは単なるデスクトップuiではなくそういう意味で大きな意義があるんですよ。
大丈夫JavaFXなんて誰も使わないから。
JavaMEはSEに統合されるし、業務用のタッチディスプレイで使うようになったりして。
JavaFXをそろそろJava SEに統合してくれぇ・・・
その環境で日本語試してなさそうだし、
バグレポート送ってあげたら?
思いのほか統合先だな
>>939 8で国際化対応やる予定だったけど結局入らなかったんだよな。インプットメソッドだけじゃなくて全部国際化されてない。
たとえば文字列は内部でtoCharArrayされてるからサロゲートペアぶった斬り。
あとb106はリグレッションあるから2.2系と同じバグあるからb105にしとけ。
>>947 それベンダ実装の話。JSRは勧告と同時に仕様書とRI出す。javafxのRIはopenjfxになるんじゃね?
つかjavafxの標準化はたしか遅れてるよ。javaoneでjava10って言ってなかった?
>>949 なるほど。よくわかりました。
linux scene 1.1もG.A.なのにアプリが突然落ちることが多く(多分JNIの実装部分)、使い物になりませんでした。
javaによるhardware,softwareのmultiplatformの実現とはいいつつも、oracleが持つlinuxの技術力はかなり低く、linux技術を使ったoracleの製品の品質もまったく期待できないということがよく分かる事例だと思います。
簡単なところではjava殲滅目的でmicrosoftが突然ms-imeの仕様の変更をしたらどうするんでしょう。
oracleの技術力云々に関係なく、多分このまま、windowsplatformともどもoracle javaplatformも死滅していくのが規定路線なんでしょうね。
日本国でリーナークスとかジャヴァが使われたりましてやそれで成功することなんてまずないから気にしなくていい。
sunが法務部にコントロールされてのろのろしてるうちに、
Linuxの組み込みでは、Androidという別のjavaワールドが中心になってしまったもんな。
まあ、windowsと同じように、通常のlinuxも小型タブレットやスマホの世界にやってくると思うが。
linuxはハード構成だけじゃなくてライブラリレベルでも構成変わるし(動画再生とIMEがもろ構成依存じゃん)
macはmacで『macはPCじゃないからmac一つだけ』と言いつつ実際にはハード構成に鉄くずと高級機の二種類がいるし
winは良くも悪くもD3Dで統一されてて実装がMSとnvidiaとamdの三種類しかないのが幸いしてるからなぁ。
ソース読むと未実装のコードが山ほどあって、macだけ必須だから先に実装されててwinでも実装されてないから機能的にはwinもlinuxも条件は同じなんだけどね。
他所のコミュニティが管理してるソースと同期するのを嫌ってprivateな実装してるくせに開発者が少ないのが問題だろ。無駄にやること増やしてる。
JAVAでGUIしたいなら何使うべき?
oracleにはbsdだけでなくdebian/ubuntuのlinuxについて商売できる人材も開発できる人材もいないんだし、そんなんじゃ組み込み向けにjava,javafxをアッピールなんて出来やしない
>>953 javafxについては2013年完成(java8)を目指して工程表が2年以上も前から出てたのに、multiplatformを宣言してる割に、この期に及んで実際は穴だらけのままなんじゃ、oracleは一体全体今まで何を設計してたんだろうね
ぶっちゃけWebKit+HTML5があまりに強すぎて
クロスプラットフォームGUIなんて、労力かかるくせに実がないものはやる気でねえんだろ
oracleは、未だに設計という行為の何たるかを知らないんだろ
sunは機能を机上のみで追加して手広くやろうとせず当時の現状に即して狭めた設計だったから、当時のsun javameは成功した
設計思想も持ってないどころか開発力もないoracleは、どうして当時のsunが成功したのかjavafx,javameが結局頓挫しちゃう前にちゃんとsun様の思想理念の具現化をリサーチしておかないといけない
>>957 今のjavafxでは、webengine classでhtml/xmlを読み込んで、プログラム上でxml domを取得して、java,jvmからdocument構造を操作できるの?
961 :
デフォルトの名無しさん:2013/11/15(金) 15:00:42.14
そんなグラフィックスライブラリないだろ
グラフィックユーザーインターフェース
>>959 WebEngine#getDocument()で出来るけどjavascript側に書いたほうがコード短くなるし、
DOM4だとhtml5専用にしたからSVGとMathML以外のxml正しく扱えないぞ。
WebEngineの実装自体は出来いいよ。Canvas2Dくらいなら実装されてるし。
ただし、javaでjavascriptのオブジェクト実装して公開とかjavaからjavascript通信とかまだ仮実装。
そのうちやるとか言ったまま音沙汰無い。だからブラウザにhtml5食わせる使い方しかできない。専ブラとか無茶よ。
>javascript側に書いたほうがコード短くなるし、
少し混乱してるんだけど、これはhtml,xmlをjavafxのコントロールで直接扱うのでなくて、現状でもfirefoxとかのブラウザのjsに頼った方がいいってこと?
html5といっても組み込みとか小型端末でどうせブラウザが必要になるのだから、oracleもfirefox,chrome頼みでなくてjavafxを使って自身のブランドのブラウザを作ればいいのに。
appletの時と同じく、どうせhtml5になると外部一般のウェッブをブラウズするなんてことはせず、そのウェッブ・アプリを起動しっぱなしなんだし。
>>964 >これはhtml,xmlをjavafxのコントロールで直接扱うのでなくて、現状でもfirefoxとかのブラウザのjsに頼った方がいいってこと?
いや、ちがう。htmlにjsコード埋め込むかWebEngine#executeScript(String)使うってこと。
java側のDOM API叩くと静的な型や冗長なjavaの命名規則やシンタックス気にする必要があるからコードが煩雑になるって話。
いま丁度、WebView使ってるんだけどDOM自体が冗長だから自然とコード量増えてここら辺が結構ウェイトしめる事になるんだよね。
だから、スクリプトにできることは分離したほうが楽だと思う。
LiveConnectが実装されてるからJSObject#setMember(String, Object)でjavaのオブジェクトをJavaObjectとして登録することは出来るから
WebEngine側のコードを全部javaで書く必要はないんだよ。
java,jsどちらでやるかは、コーディングが楽(文字数が少ない)かどうかでなくて、その後のメンテナンスや可読が楽かどうかで選ぶけどね。
javaならクラス・メソッド自動補完とコーディング・テンプレート補助ができるideが多いでしょ。
そこでdartっすよ
>>966 文字数っていうかリーディングの時に意味のないget/setプレフィックスとかキャスト連発すると可読性落とすじゃん。
あと、javascript側にjava公開する必要ないならhtmlにjs埋め込んでデバッガが充実したブラウザでhtml部分をデバッグすれば開発楽だよ。
WebViewとWebEngineはJNIの塊だからjava側からデバッグできることは少ないだろ。
get/setはbeansなのでなれの問題で、キャストはgenericsなので、javaである限りそれはコーディングの問題ではありません。
逆にget/setがついてた方が、全体の構造を理解し辛くても、なれると実際は個々では読みやすいですよ。
jsは結構好きですが、javafxscriptがどうして廃止になったのか、javafxapiはどうしてjavaのルールでコーディングすることになったのか、をよく調べれば、次世代uiがhtml,js埋め込みでなくどうしてjava,jvmを使うのかが分かるんじゃないですかね。
こんなところで盛り上がっても
オラクルは変わらないよ。。。
GUIはGUIでやるとして、
JavaのWeb描画は、一方通行のDOM操作でできる範囲で、
Webブラウザのフロントエンドは、TypeScriptやEmscriptenなどのJavaScriptへのトランスレータに任せて、
あとは、サーバーサイドのRESTをJavaに任せればいいんじゃないかと。
973 :
デフォルトの名無しさん:2013/11/19(火) 14:31:58.44
JavaFXでラジオボタンの左側に付いてる◎を表示させない方法を教えてください
>>973 普通のボタンノード使えばいいじゃないか
975 :
デフォルトの名無しさん:2013/11/19(火) 19:57:34.91
普通のボタンノードってのはjavafx.scene.control.Buttonの事ですか?
グループ化して排他制御したいので、それだと困るんです
977 :
デフォルトの名無しさん:2013/11/19(火) 22:24:57.37
ToggleButtonだとどれも選択されてない場合があるから
ChangeListenerのchangedメソッドでnewToggleがnullだったら
oldToggleを選択させるようにするって事ですか?
なんか面倒くさいですね
978 :
デフォルトの名無しさん:2013/12/02(月) 04:16:27.84
Windows 7 pro SP1 (64bit)とJava 7 45-b18の環境で下記のコードを実行し、
ToolTipを表示させるとWindowsのAeroが無効になってしまいます。
環境の異なる3台のPCで試しても同様で、numberOfLinesを10のような小さな数にすると
この現象は発生しません。
大きな数でもAeroが無効にならないようにするにはどうすれば良いでしょうか。
int numberOfLines = 300;
JFrame frame = new JFrame("ToolTipTest " + numberOfLines);
JPanel panel = new JPanel();
StringBuilder sb = new StringBuilder();
sb.append("<html>");
for(int i = 0; i < numberOfLines; i++) {
sb.append(i + "<br>\n");
}
panel.setToolTipText(sb.toString());
frame.add(panel);
frame.setSize(320, 240);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
複数行のツールチップを表示させるだけの再現用コードです。
Aeroが無効になる
突然Aeroが無効になった
Aero機能が勝手に無効になる
Aero側のバグなら他のプログラミング言語で大きいツールチップを表示させても同様の現象がおきるはずと予想
もう7捨てて8にしちゃったからテスト出来ないし
8だとどっちみちAero廃止(実際は使われてるのは知ってる)だし
追及する意味があるかどうか疑問符が付く
>>979 ありがとうございます。
既に調べていたのですが、数年前の記事ばかりで
「Javaを最新版に更新すれば解決する」という
ことしか載っていませんでした。
>>980 ありがとうございます。試してみます。