Java低速GUI Swing 10
>>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が分かりやすく学べる、おすすめの本を教えて下さい。 >>422 ええ、かなり前に出版された本ですね。 で、どなたかお勧めプリーズです。 本屋行って出来るだけ新しい本を探そう 最低でも3年以内、11年前の本とかは論外(読みかえが必要な個所が多数で使いものにならない) swingは時代遅れ、javaFXの乗り代えなさい >>425 なるほどそうなんですか…。 プログラミングの世界は技術革新が早いですね。 同じjavaでもラムダ式だと一瞬他の言語のように見えます。 そーいやJavaFXは日本語入力できるようになったん? 最初期に触ってた新しい物好きな日本人はあれでかなり居なくなったよね。 Javaって業務用アプリ書くのに使うのに、日本語通らないって言われたら誰も手を出さないんじゃない。 jre6なSwingでいくつかローカル部門用アプリ書いたけど、jre8の今もまあ普通に使えてるよ。 FXに手を出したことさえないけどさw JFrame だけのプログラムで、フレームを拡大縮小し続けるだけでメモリ使用量が 200MB くらいまでいくんだがw なんて起動して放置してるだけでヒープ増え続けていくのん? なんか生成し続けてるの? 小さい画像領域に大きい画像は入らないから、新しいメモリ領域を確保するだろ 小から大へ動かすとメモリを大量に消費するだろ 最近始めたんですが 起動がめっちゃ遅いのは仕様ですか? Eclipseからの起動→遅い JAR書き出し起動→超遅い 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 JD7SU JavaFXが死んでこっちは盛り上がっているかと思ったが、そうでもないんだな。 向こうのスレから転載 An Oracle White Paper March 2018 Java Client Roadmap Update https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf Swing and AWT AWT has been an integral part of Java SE since its launch in 1996. Swing was introduced shortly thereafter as a separate library and finally incorporated into “J2SE 1.2” in 1998. Both toolkits are still part of the Java SE Specification and core to many other toolkits and applications that build on top of them. Oracle will continue developing Swing and AWT in Java SE 8 and Java SE 11 (18.9 LTS). This means they will be supported by Oracle through at least 2026. > This means they will be supported by Oracle through at least 2026. オラクルがこういう言い方するときは要するにまだ何も決まってないってことだぞ。 未来のことに触れてると見せかけて現状を説明しただけっていういつものやつ。 GNU LGPL3で立ち上げたいけど、 Javaのオープンソースでもいける? 一応GNUにメールはしてる 大丈夫だろうか、あまりGNUライセンスにする傾向じゃないプログラムで、 ただ、他に向いてそうなライセンスが見当たらないんですよね。 メールはしたから返事まちかな、、 OSDN > ソフトウェアを探す > マルチメディア > サウンド/オーディオ > ミキサ > Extended MIDI Mixer Yahoo知恵袋の宣伝目的NGに該当するので、こちらで伺います。 Swingなのでこのスレを見てました。 ビクビクしてますが、、 MidiDevice用のINはスレッドをAPIが立ち上げてるのか 一応対処しました。 ひょっとしてOUTも? あとOutputのバッファオーバーを知るAPIがないから それは勘弁な 0.93リリースです。 予想通り過疎ってるwww 独り言落としてくね! Win版OpenJDK使用のアプリで、タッチパネルピンチ操作イベントをマウスホイールイベントとして拾えないバグ、報告されたの5年前なのにずっと放置w もう本家もやる気ないんだろな。 FXですらMac版のスレッド実装問題でdndで落ちるバグ放置されてるし。 仕方ないので、前者はJNA使ってイベント拾う実装を書いてる。 ピンチ検出までできたからもう少しでインかアウトの判定に辿り着けそう。 というわけで未だにswingでマルチプラットフォームアプリ書いてるわけだけど、 WindowsのUWPはオワコンになったし、 なんだかんだで業務用アプリ書くには悪くない環境ですよswing は。 動作もjavascript頼みのマルチプラットフォームフレームワークより軽いと思う。 では、数年後スレが残ってたらまた来ます。 >>451 >なんだかんだで業務用アプリ書くには悪くない環境ですよswing は。 これは大収穫のお言葉、詳しく教えてください!! プログラミングモデルは好きだけど look & feel は不完全な模倣になってて ネイティブのラッパーの方が 実用的だなと思った わしも! 非同期処理の実装しやすいし androidとかフレームワークによってはダイアログ表示と結果取得が非同期だったりするしw swingアプリにJFXPanelのwebkitブラウザ実装したUIキメラ作ったったw これでjsベースのエディタとかビューのモダンなUIフレームワーク使える ブラウザ内のjsエンジンから発生したイベント拾ってJava側でハンドルする ただswingとjfxのスレッドが別だから 初期化時の同期と相互にinvokeLater()使うことに注意必要だけど 男は黙ってJEditorPane サシャナゴンの方が好きだ >>451 本業の合間にやってたから今頃なったけど、Windowsでピンチ操作拾えないバグの回避実装に成功した~ JNAでWin32のローカルメッセージハンドラフックしてピンチイベント検出できた VC++の構造体の内部資料が無くて 色々なソースから類推するのが大変だったけど勉強になった >>452 亀レスすまん 流行りのWebのvue.jsとかreactとかより 設計がシンプルだからデバッグしやすいなど実装が楽ってだけ 業務用はuiのカッコ良さより安早楽が大事でしょ? あとビジネスロジックにおいてJavaは高機能ライブラリが豊富なのも有難い MSの.NETほどにフレームワーク設計しくじってぐちゃぐちゃになってないし 逆に今どきのおしゃれインターフェースにしたいならjs系がいい そういやスレタイでswingを低速言うてるけど JavaFXのほうが初期化しめちゃめちゃ時間かかってもっさりしてるんだけど… そしてmacでは未だにスレッド競合解決してない swnigよりオワコンな気がする スタンドアロンアプリ自体が絶滅しようとしているんだ… クラウドが大規模障害起こして復旧目処立たなくなったとき 人々はjavaアプリの偉大さを噛みしめることであろう swingは死なず、ただ去りゆくのみ JavaでGUIするぐらいならウインドウにHTMLでええやん… まあハードウェアアクセラレートあってもHTML/jsのUIがもっさりしてるのみんな慣れてきたしね GUI表現としてHTML/CSSは十分なんだけどロジックをJavaScriptで書くのはつらい ビジネスロジックは鯖側のnode.jsで書けるしスタンドアロン系も同じnode.jsで動くフレームワークあるよ ただマルチスレッドじゃないから似非非同期による安定実装めんどくさい サーバー側のnode.jsだってJavaScriptじゃん それに昔と違ってビジネスロジックはサーバーサイドが担当するって考え方も今は通用しない SPAが流行しててクライント側で動かさなければならないロジック(JavaScript)が昔より増えてるのだ ビジネスロジックとUIロジック整理しないで実装してるから開発管理破綻してるのでは? フロント/バックエンド部隊の連携、運用保守まで考慮した設計できないならSPAは採用すべきでないと思うけどなぁ 俺のvue.jsとlambdaの開発リーダー経験からの話だけど next.jsあたりはもっと進歩してスッキリしてんのかと思ったが違うの? ビジネスロジックをサーバー側に閉じ込めようとすると SPAではクライント/サーバー間の通信回数が増えてレスポンスが低下したりするのよ だからクライントでビジネスロジックを動かすようになってきてる そうなのか、そんなファットになると 遅延読み込み使ってもロード&jsコンパイルのせいでキャッシュ前は凄く重そうだ そんならアプレットやActiveX時代のほうがよほど合理的だよねw 4年くらい前は鯖と無駄な通信しないように同期対象データを複数のグループにまとめてパフォーマンスと操作性のバランス保ってたけど いまだにフレームワークで鯖と自動差分同期も出ないんだ… というわけで、アプレットはダメでもswingアプリ復活の方向でめでたしめでたしw Ruby on Rails 7 からは、Hotwire に変わった。 HotwireはHTML Over The Wireの略で、 SPAの開発において、JavaScriptのコーディングを極力必要としない。 脱node.js, webpack JSONではなく、HTMLベース。 サーバーサイドでHTMLを生成し、WebSocketでWebブラウザへ送信する https://techblog.gmo-ap.jp/2022/07/05/rails-7-hotwire/ https://zenn.dev/shita1112/books/cat-hotwire-turbo/viewer/abstract SSRていうやつけ? Rails嫌いではないがすっかりオワコンイメージだなあ いやほんとにファットなアプリケーションをHTML/JSで実装しようというアプローチ自体が間違ってたんだなぁとしか思えない そんならアプレットやバイナリ配信してキャッシュさせるアプローチに戻したほうがいい Rails 7 のHotwire, Elixir のPhoenix もLiveView で、 websocket によるリアルタイム通信に変わった。 これはHTTP2 で通信速度が速くなったから ここ数年、SPA でReact に奪われたシェアを回復すべき戦略。 JSON を送って、ブラウザ側で組み立てなくても良い Webフロントエンドは成熟しないねー 次々と新しい技術が登場してきて大変 いま最新技術を選択しても数年後には「まだそんなの使ってるの?」と言われちゃう 日本の客も開発者も要件整理苦手だから泥縄で作るじゃない? そういうやり方の場合SPAは実装ぐちゃぐちゃで使い勝手も悪くメンテも困難になる レガシーなページ遷移あったほうが自然とトランザクション整理されるからお似合いと思うけど そういう意味ではswingとかスマホでスタンドアロンアプリ作るのも日本人向きじゃないと思う >>478 >レガシーなページ遷移 Ruby on Rails では、turbolinks を使って、pjax になる ajaxとhistoryAPI(popState, pushState)を利用して画面遷移する。 js, cssの読み込みを初回時に行い、次回以降の読み込み処理を省略することで高速化する いまではPCのスペックが上がって、遅くもなんともない。 JAVA SWING のボタンはお洒落だからカワイイから JAVA SWING はボタンはカワイイくてお洒落だ swingアプリメンテしてて困るのは 最近は横4000ドット近くあるノートPCで アイコンやフォントが小さすぎる問題 古いフレームワークだからそういうの想定したスケーリング機能がない 結局自分でcontainer内のフォントサイズを再帰的に設定するメソッドとか作ったが 何十個もあるダイアログ全部まで手が回ってない… 逆に>>481 の言うように、スピードは全く問題なくなったね >>482 かわいいっていうか ちっさすぎて見えなくなったよ SwingってHiDPI対応してないの? Swing で作られてるらしいIntelliJ IDEAはHiDPI対応してるっぽいけど? >>485 標準のL&Fは対応してないよ 対応しているように見える実装は独自L&F実装してる OS側の強制拡大スケーリングはうまくいかないこと多いし やはり時代遅れ そうなのか ちなみにJavaFXはHiDPIに対応してた >>483 そんな高解像度のまま使っているのがおかしい jfxはmacOSで致命的ハングするから 代替にならないんだよなぁ ところでJavaFXにあるような カレンダーによるdatechooserいいの無い? 名前忘れたけど有名どころのやつは HiDPI対応してないうえにフォント拡大も パネルサイズ変更も対応してないので つかえないんですよ read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる