Java低速GUI Swing 10
なんでそこまでする必要があるのかよくわからんが…? 2ちゃんブラウザは書き込める公開proxyにしか興味なくなった >>313 そっさく更新されててワロタwww しかも背景ちょっと色が薄くなっただけ 作者さんいい奴ぽいな。他人事だと思って軽い気持ちでコメント書けばって言った俺ちょっと反省。 タイトルバーを独自に描画しないと、FX使っても カッコ悪いアプリしかできないね。 俺も昔そう思ってたわ 「俺の考える最強のタイトルバー」をユーザは求めているのか? どんなメリットやデメリットがあるのか?自己満足じゃないのか? タイトルバーの色をラズベリーレッド・パールホワイト・ミッドナイトブラック の中からお選びください 間違えた。 野際陽子「レディース・アートネイチャーより、Forte (for Java)登場しました。」 今までSwingの標準Look&feelで書いていたプログラムをGTK+のLook&feelで動かそうと思ってmainの最初にUIManagerの命令を足しました。 見た目はしっかりGTK+化されているのですが、setBackgroundなどが機能せず、色が変更されません。 専用の命令が必要なのでしょうか? setBackgroundしてから、repaint();で変わらない? >>335 NetBeansなどのデザイナー使えばいいんでね >>334 UIManagerとUIDefaultsとputClientProperty使えと何度言えば 軽量コンポーネントは描画してないっつーの。 それかJavaFX使え。CSS書けばそれで済むからSynthと違って本当にCSSだけでなんでもできるから。 テンプレに入れとけよこれ。 JavaFXのメリットが良くわからん。 SwingのL&Fを強化すれば済んだんじゃないのか? substanceとか、syntheticaとかの外部ライブラリを使えば綺麗にできるけどね。 >>339 FXで今度こそプラットフォームインデペンデントな開発ができると夢見たんやな… >>339 ・原則ソフト前提のswingとちがってH/Wアクセラレーション前提で動いてるとか ・ライブラリのスペースがswingと比べて超軽量とか ・Swingにないコンポーネントサポートしてるとかはnetiveな部分が関わってるからswingではできないしJNIでJAWT呼び出す以上糞重いし ・マルチスレッドで書いたつもりなのに謎のバグがあるし ・>>334 みたいなswingわかってない奴がどうやっても描画ぶっ壊せない設計になってるとか LnFなんてメインテーマじゃない。 >>342 javafxはそんなもん目指してない。バリバリプラットフォーム依存してるしJAWTより薄いnativeで書かれてる。 そもそもRIAなんだからプレゼンテーション層はアプリケーションプログラマが書くからその下触らせないようにしてるからプラットフォーム独立なんて必要ない。 実装にクロスプラットフォームなライブラリ使ってるから移植性に問題もない。だから3dできるしwebブラウザあるし動画再生できるしOS依存の機能使える。 他にも山ほどメリットあるけどあげ出したらキリがない。 というか、SwingXのpainter APIをsunが諦めた時点でswing捨てるのは決まったようなもんだしjavafxにswing teamがsponsoredしてるからその内swingはメンテ終わる。 あと >外部ライブラリを使えば綺麗にできるけどね。 その外部のライブラリをJREに含めるはずだったSwingAppFrameworkがキャンセルされた後javafx2に移行したんだよ。 ほかにもSwingLabの成果は将来のSwingにマージするつもりだったけどこれもJXLayer以外キャンセル。SwingLabはSwingにおけるboostだからそこが解散したらもう未来はない。 javafxにおけるSwingLabに相当するコミュニティもすでにあるから移行する気まんまんだよ。 JavaFXってWindow最大化判定ってできないの? Y_AXISに配置するBoxLayoutを設定し、maximumSizeを決めたJPanelの下にJTextPaneを設定すると、 JTexetPaneの右端まで文字が行っても改行してくれなくなってしまうのですが、これを改善する方法はありますでしょうか? swing designerのような、GUIでウィンドウパーツを組み、ダイレクトにプログラムが書ける EclipseのJavaFX2プラグインありませんか? >>348 それはどのIDEもSceneBuilderを組み込んでるからFXMLのポトペタ部分はどれも同じなのは知ってる上でeclipse固有の話? それならIncubation projectになってるe(fx)clipseがある。 ほかのIDEとの違いはttp://www.coppermine.jp/docs/programming/2013/12/efxclipse.htmlが簡単に説明してる。 ところでJava1.8+swingがデグレードだらけらしいんだが。 Java+Swingによる2chブラウザ V2C_R72 http://anago.2ch.net/test/read.cgi/software/1407868516/ 416 2014/08/29(金) 11:52:21.44 ID:sik4QNGf0 名無しさん@お腹いっぱい。(sage) V2Cが原因じゃなくて1.8.0_20のIME関連が死んでるっぽい。 jEditでも日本語入力しようとすると死ぬ。 ちゃんとテストしてからリリースしろよ。 java - Swing rendering appears broken in JDK 1.8, correct in JDK 1.7 - Stack Overflow http://stackoverflow.com/questions/22737535/swing-rendering-appears-broken-in-jdk-1-8-correct-in-jdk-1-7 http://i.stack.imgur.com/zZwGe.png The rendering of the Font seems to be not OK. Additionally the Button looses its Text, when i move my mouse over it. JavaFXスレが機能してないようなので、こちらで質問。 JavaFXでウィンドウがアクティブになったときに、イベントを発動させたいときはどうしたらいいのでしょう? addFocusListenerに相当する機能が見つからなくて。 以下はSwingでのサンプルです。 ttp://2sen.dip.jp/cgi-bin/upgun/up1/source/up0607.zip JavaFXのシーンビルダー2.0で探してみたけどよく分かりませんでした。 分かる人が居たらどうかお願いします。 そこ前スレじゃないし。分けても人来なくて過疎って落ちるだけって前から言われてたのにテンプレも貼らずに立て逃げしただけ。 >>351 そういうことだったのね どうもSWINGで作ったアプリがJDK8に入れ替えたトタンに、JtextField上で日本語変換すると アプリが落ちちゃうんだよなあ。 jdk8u20以降全部ダメだから8u11にしなさいとの神のご神託です。oracleだけに >>360 Oracleがいかに糞なのかがわかる。 Googleも糞だが、2バイト語圏のテストなんてまるでしていないのがよくわかる。 Javaもそろそろ潮時かもな javafxのlinux platformへの対応が今でも後回しってことが根本的に間違ってる java7(javafx2)がでた2011年の時点でも、javaseやjavafxがwindows platformで使えるメリットって全く無いでしょ そういう要不要の判断ができないのは、優先順位や目的も設定できず、なんとなくで作ってたのが原因だろう モバイルデバイス市場をグーグルに持ってかれちゃった時点でjavafxは廃止してとりあえず様子見でswingに集中すべきだったのにね で、できたjavafx api/frameworkはswingと全く同じだし、それならswing apiを流用して内部実装だけ取り替えるという設計もあったんじゃないのかと思う javafx9は現在のjavafx2/8のapiを全て破棄して、swingライブラリ一部として結合してほしいね(それぐらいのことしないとjavaのguiは使ってもらえないだろう) ただ、グーグルはオラクル(サン)に比べれば名ばかりの貢献であって、長期的に実質的にはオープンソースに何らの貢献もしてないし,グーグルはオラクルを上回る大糞ってことは確かだ よくみたらJComponentの継承関係がjava.awtに依存してるからjavafxとswingを統合するのは無理か それで考えてみたんだけど、javafxのui生成はfxml,cssだけにして、javaコードではui生成はできないようにすればjavafx apiの大半を削除できるし、awt,swingとの差別化にもなる fxmlにはannotation仕様も入るから、html+jsのようにbindingもfxmlでやれるし、現在javafx apiが肥大化し続ける問題を全て解決できるだろうね html,cssでpage form作るのとほぼ同じパラダイムになるからswing mvcを学ばなくて済むし、コントロールのクラスが非公開なのだから公開java apiをメンテしなくて済む uiの動的生成は全く使わないしbuilder classパターンと同じくいらないから、コントロールのjavaクラスはjava9では削除にして、fxml+annotation(java)+nashorn(js object)で構築するのが自然だろう そもそもJavaの商用アプリケーションなんて「素人が作りました」という言い訳が可能が携帯ゲーム以外で見たことないしな… uiは基本的に使いまわしたり他に流用したりせず使い捨て前提でデザインするから、ui frameworkが大きく変わって互換性があまり考慮されなくてもあまり困らないだろう。 kde3,4やgonome2,3も互換性は維持は前提としてないし、ui frameworkは同一バージョンのプラットフォーム固有で、パフォーマンスが必要な3d,anime,game,canvasなどはネイティブに密着で作って欲しいね。 というか、多少複雑でもhtml,flashですら簡単に素早く作れるのだから、それに比べれてみても、javafx8 apiは肥大化して、機能多過ぎで、言語サポート(リテラル)がなくいためコードが多くなって煩雑になる。 しかも、frameworkの設計が使い捨て捨て前提のui生成ではないから管理に手間もかかり、今後javafxをやるのはどう見ても終わってる(普及する可能性もない)。 >で、できたjavafx api/frameworkはswingと全く同じだし まるっきし違うんだが少しはソース読めよ。 ていうかおまえそればっかだな はあ? javaをwindowsだけで使うならjavaなんか止めてc#やれよ。 windowsでjava使う状況は、仕事で必要って以外でjava,javafx,swingが必要な場面ってまずないだろ。 ていうか、linuxのswing,javafxの悲惨すぎる現状を知らないんだろうおまえは? guiなんかhtml page見てもわかるけど、model-viewなんかに分離しなくてもちゃんと作れるし、mvcやその派生のデザイン・パラダイムはもう今の時代やニーズに合わないってこと気が付かないの? linuxやshellもろくに触れず、windowsで満足しているお子様には、guiのお作法とかswing mvcの勉強とか絶対無理。 そもそも勉強が一巡できるかどかよりも、今のjavafx,swing frameworkは巨大で難解すぎて集中力の方が続かないだろね。 >>362 JavaFXに限らずLinuxのデスクトップなんて優先度は最下位でおk。 linux desktopが大事なんじゃなくて、javafx platform戦略としてはopenglesのjava platform再実装であって、linux kernel(shell)を使う端末のためのgui shellをx11に変えて提供するのが目的ってことで、 linux実質はopenglesが大事になってる。その流れでopenglesを実装したx11ではないlinux desktopが恩恵を受けられる。 windowsは特別dirextxのラップで提供しているに過ぎないけど、xbox,psなどjavafx(opengles) apiを使うよりよりネイティブのdirectx/c++しか使わないから、 directx版のjavafxを提供し続けてもjava/oracle利益にもならないし、microsoftものに関わってる時点でオープンソースに貢献もしない。 つまりwindows platformは副次的にして、linux(技術者サーバ)、mac(高利益クライアント)にoracle's resourcesを集中しないと、 javaはdotnetの代替に過ぎずjava platformとしても成長することはない(javafxがwindowsで普及することは絶対にない)。 思うに、windows版のoracle jdkは廃止して、jreだけ提供にすれば、google android対策、windows普及対策、ms-devices普及対策になるね。 windowsでjava開発をしたければ、oracle virtualbox(つまりfree linux desktop)か、jre/bin/jjs(つまりecmascript5/6以降)でやらせて、 ide当開発のパフォーマンスが欲しい人は、microsoftものではなく、mac,linux desktopを導入してもらえばいい。 microsoftの社長がナデラに変わったけど、windowsはcloudosを標榜してるから、windows native(desktop)の高速化にもこだわらず、デバイスがcpu 2.0ghz以下だからパフォーマンスも期待できず、 コスト管理のためwin32apiを全般してdotnetに統一しても、今後のmsもの,windows platformものは、デバイスが高速でないから体感も差はないから批判はあまりないだろう。 これが意味するところは、windows native開発ははc/c++を廃止して全てdotnet vmでやるという方向転換をされたら、jvmはdotnetvm上で動きパフォーマンスはかなり悪くなるから、 linux desktop,devices(tabletなど)が大事なのは、javaが今直ぐwindowsから離れないなら、もうjava platformはmicrosoftの手の上なのだからjavaに未来はないからだ。 sunは消滅し、mac,msとも代表者が代わり、時代は変わったし、これに順応してスキームを変えられないところ(もの)は時代にもニーズにも合わず自然消滅するのかと思う。 この板の投稿の限界値、2048文字丁度なんですよ 他に書いたこともいろいろ削除したんですけどね 率直に聞きますが Swingでスタンドアローンアプリってどうなんでしょうか? やっぱり、各プラットフォーム毎にアプリケーションはそれぞれ に最適なもので作ったほうが良いのでしょうか? guiもクロスプラットフォームにできるという発想自体が幻想だったんですよ 実際受け入れられたのはhtml formですし javafxについても、html5のオラクル実装ってことで突き進んで欲しかったんですが、fxml,cssだけでいいんで、java codeでもui作れるのはいらないです(そういうのはswingでお腹いっぱいです) 理想としては、html3,4 (form), html5のタグをjavafxもの(fxml)に変えてclassfileへコンパイルするだけでjavafx appとして動くってのがいい感じなんですけどね >>374 商用はあきらめて、Pascalみたいに教育に特化すればよいかと 何で「Swingでスタンドアローンアプリってどうなのか?」って質問の答えが 「Pascalみたいに教育に特化すればよい」になるんだよ? swing linuxは、java6以降であればgraphics2dが改善されてるので性能やレスポンスの面では実用です。 linuxの本格的なサポートはxrendererがサポートされたjava7みたいですけど。 ただ、gtk-lafは崩れるし、linuxでは金掛けてないんで作りこまれておらずただ動くってだけで、j.a.SystemTrayはやる気ないし、awtとネイティブ日本語入力・変換との連携はjava8u5でもバグってて未だ直ってません。 画面が見たいなら、netbeansやv2cのlinuxをみればいいんじゃないですかね。 >>369 windowsでjava使う人がほとんどだと思いますけど。 とくにjavaが一見人気に見えますが、よく見ると実際はwindowsでandroid作ってますってのが大半でしょう。 つまりそういう人たちは、microsoftやgoogleものに貢献してますが、oracle,javaものには全く貢献してません。 上の続きですが、oracle jdkのwindows配布は中にして、windows oracle jdkは有料プログラムだけにするのがいいでしょう。 mac,linuxはオープンソース自体なので有料にする理由はありませんが、windowsではvirtualboxもopenjdkもあるので問題ないです。 これと同じくmsがwin32api, c/c++,vc++を一般向けは廃止にして、有料の契約者だけにして、一般は全てdotnetでやるという戦略をとるは現実的だと思いますよ。 そうすると、windowsplatformのvmものつまりdotnetで作るアプリ以外の全てのアプリはパフォーマンスがでないので、msとの有料契約か、ただ動くっていうのだけになるでしょう。 cloud-osの説明を見ててもmsとしてはwindowsのアプリは、基本html5,js,browserでやってくれればいいことでしょうね。 windowsでandroidしか作れない現状のjavaは、javafx(javame)はもちろんjavase自体がオワコンってことです。 JCheckBoxでテキストをクリックしてもチェックが変化しないようにしたいのですが、どうすればよいですか? JavaFXで作った2chブラウザとかあるよ かなり重いけど http://www.m9-www.com >>381 なるほど、こういう意見を言う奴は、3以下の数すら数えられない知性の持ち主と言うことで、 ということは、まともな知性の持ち主は当然逆。 >>384 それって、もしかして産業革命とモジったの? 低速も問題かもしれんが、デザインしにくい VisualStudioだったら適当に貼り付けて終わるが WindowBuilderでやるとスゲー時間が掛かる まるでWEBページを手打ちだけでデザインしてるようだ V2Cもswingで作ってるけど、どれだけ時間掛かったのだろう オマエラの根性に頭が下がるわ もしかしてJavaでGUIがやれるという点しか利点がないんじゃね 天才が組んだアセンブリ資産をデバッグできる人がいなくなったという教訓から、プログラミング言語は馬鹿にもできなきゃダメだということ共通認識になりつつある 8u25が出たのにレス1つなしかいなw swingのバグ直ったらしいぞ。 これか? http://www.oracle.com/technetwork/java/javase/2col/8u25-bugfixes-2298227.html > JCK8's api/javax_swing/JDesktopPane/descriptions.html#getset failed with GTKLookAndFeel on Linux and Solaris run v.s. JDK8+ > api/javax_swing/JScrollPane/indexTGF.html#UpdateUI failed with MotifLookAndFeel on all platform > SWT cannot load native look&feel SWT関連のバグにも対応するのな javafxもswingもまともに動くのはwindowsだけだし、実質windows専用でしょ 今どきwindows以外でもguiが使えればいい、動けばいいというだけじゃだれも使わないよ android,iphoneやその他モバイルでは、どうしてクロスプラットフォームのフレームワークがなかなか流行らず、みなネイティブ言語を使い新規にguiコードを新規に書くのか guiのコードについて手を加えずともwindows以外でも動くのに、なぜ過去にswtが台頭し、なぜ現在までswingは積極的に使われなかったのか それは、windows以外だとjavafx,swingは積極的に力を入れてサポートしておらず、まともに動くのは結局windowsだけしかないからです >>399 windowsで満足してlinuxも使ったことないのによくいうよ windowsで十分満足ならそのどこにクロスプラットフォームが必要なんだよw しかもネイティブlinuxでswingとかjavafxとか作ったことも動かしたこともないんだろ? linux環境でgtk-lafの不出来motiff-lafの最悪さをみれば、swingってのは結局windowsだけだなってことがよく分かるだろう javafxだと、オラクルになってからjavafxドメインと専用ページが消滅し、javafxの紹介ページもjavaseに埋もれてjavafx platform自体が消滅してるでしょ(つまりjavaはオワコンってこと) XPサポ切れによるLinux人口が増えてればLinuxでのGUI需要も増えるだろうからOracleも対応してくるかもしれんよ >>402 そういう人はlinuxにも来なくていいしjavaでも全くお呼びでないので、windowsだけで一生過ごしてて下さい >>401 Windowsにこそクロスプラットフォーム性が必要だということを知らないのか? クライアントは自分のマシンにも「Windows」という名前がついてるから、Windowsで動くものは動いて当然だと思ってるし >>404 それはマイクロソフトがやることであってオラクルの仕事じゃないですね そもそもwindowsで閉じてるならjavaじゃなくてdotnetでいいのでは? >>396 IME問題と思われ。 JDKのページ(その詳細じゃない方)に書いてあるね。 V2Cで騒がれてたけど、そもそもNetBeansでこけるという壮大な奴。 oracle社員誰も使ってないんだねー >>404 Windows CEとWindows RTとWindows Phoneをdisるのはやめてもらえませんか?w >>409 経験上、Windowsで互換性が一番あるのがC言語だったというオチ >>401 クロスプラットフォームなんて幻想だよww 実際には、それぞれの環境に応じて、同じインターフェースになるように 作ってるのが現状。Javaだのなんだの、そんなものは、今もう語るような ものじゃねぇよ。 /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://ヽ:::::::::::::::| l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::// ヽ::::::::::::::l l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/:::「'ヽ:::::::::::// ヽ:::::::::::| |::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ノl:::ノ l:::::::/ ヽ::::::::| ノ:::::::::::::::::::::::::::::::::::::::::::::::::::::/ ゙゙ ノ:::/ ,,;;;;;;,, ,,,,ヽ:::::l ):::::::::::::::::::::::::::::::::::::::::::::::/ ノ/ __,'''i: ('''__):::l )::::::::::::::::::::::::::::::::::::::::::::::::::/  ̄ ̄ン:. :「 ̄`ヾ 1:::::::::::::::::::::::「 `┤l:::::::::::::::::l  ̄ , ヽ ̄ l `l:::::::::::::::::::::ヽ :l li:::::::::::::/ ヽ /´ `l | ヽ::::::::::::::::::::::\_」 lヽ::::/ .l !:-●,__ ノ / ノ:::::::::::::::::::::::::::ノ | l `゙゙ i ,,;;;;;;;;;;;;;;;;;;;;, /ヽ ,/ ヽ::::::::::::::::::::::( l l::::::::.. /.:''/´ ̄_ソ / `ヽ ヽ:::::::::::::::ヽ | l:::::::::::... /::// ̄ ̄_ソ / \ ヴッ!! ヽ:::::::\| l::::::::::::::::... / :::.ゝ` ̄ ̄/ / ヽ ヽ:::l l:::::::::::::::::::..  ̄ ̄;;'' / ヽ l l;;;;;;:::::::::::::::.....;;;;............;;;;;;''ノ l l l '''''''''''''''''''''''''''''''''''''' ̄l | | http://www.youtube.com/watch?v=z2qK2lhk9O0 JFrameの大きさを中のコンポーネントに合わせて変化させたいんだけど、中のコンポーネントの大きさを変えた後のJFrame#pack()が効かない件 >>414 とりあえずこれは動いた import java.awt.Font; import java.util.Random; import javax.swing.*; public class Test { public static void main(String[] args) { SwingUtilities.invokeLater(() -> { Random rng = new Random(); JLabel label = new JLabel("ぬるぽ"); JFrame frame = new JFrame(); frame.getContentPane().add(label); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); Timer timer = new Timer(1000, e -> { label.setFont(new Font(Font.MONOSPACED, 0, rng.nextInt(40) + 10)); frame.pack(); }); timer.setRepeats(true); timer.start(); }); } } >>415 ごめん、一週間以上ハマってたのに自己解決してしまった。 しばらくスレ更新ないからこんなに早くレスくると思わなかったよ。ありがとう。 JFrame/JScrollPane/JTableという階層構造にしてて、JTableの大きさは自動調整させてたんだけど、その結果をJScrollPaneに指定してなかったのが問題だったみたい。 JTableからgetPreferredSize()でサイズとってJScrollPane#setPrefferedSize()で指定してあげて、pack()したらうまくいった。 2回目以降のpack()は動かないって勝手に決めつけるんじゃなくて、そういう簡単なコードを書いて確かめるようにするよ。 >>414 JFrame.setVisible(false) JFrame.setVisible(true) で反映しない? packでダメなのは当たり前ね。すでに表示してるんだから。 JDK8 u60入れてからV2CをNimbus Look&Feelでつかってると 垂直方向のスクロールバーのバーハンドルが表示されなくなるんだけど。 リストが短い(バーハンドルが長い)場合は表示されるんだけど、 リスト長くなると表示されなくなる。 閾値超えるとバーハンドルの長さを最低で留めるって処理が正常にできてないっぽ。 u51ではなんとも無かった。なんでこんなところでエンバグしてんだよとしか…… たぶん水平方向も同じじゃねーかと思うが、 V2Cでは横にはそんなに長くならんので確認してない。 バグが埋め込まれたってことは、もう完全放置かと思いきやいじってるのはいじってるってことか 受ける会社大丈夫? 下記の条件が全て当てはまる会社にご注意下さい。 ・IT系 in tokyo ・「社名 労基」でググると過去の2chスレが出てくる ・転職会議で2.5点 swingが分かりやすく学べる、おすすめの本を教えて下さい。 read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる