IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
■ 久しぶりのSwing開発で躓いたところ 10年ぶりにSwingでデスクトップアプリを開発し、いつのまにか本格的に実用に耐えるフレームワークに仕上がっていたのを知った。NetBeans IDEはとても快適で、API仕様の確認やAPIライブラリのソースコードの確認も簡単にできる。わからない部分があっても、Web検索をすればたいていのことが解説されているのを発見できた。しかし、それでもいくつか、解決策がすぐには見つからない点があった。せっかくなのでここに書き残しておく。 1. テキストコンポーネントのHTML機能を殺す Swingでは、登場した当初からテキストコンポーネントでHTMLが使えるようになっていた。つまり、テキストの冒頭が「<html>」で始まっていると、それ以降のテキストがHTMLとして解釈される。IEでセキュリティ問題を引き起こしたのと同根のうざい仕様だ。JavaScriptは
2009年11月16日20:48 カテゴリ FEST-SwingでFestival! アプレッソ・バランスボール愛好会の"よう"です。 先日、「FEST-SwingでFestival!」というタイトルで「xUnit Test Patterns 読書会」でGUIテストについて発表してきました。 DataSpiderチームではGUIのテストをFEST-Swingを使って行っています。 DataSpiderのようなGUIアプリケーションではUnitテストだけでは、十分なテストを行うことができません。GUIのテストはどうしても人手でテストする必要があります。 GUIのテストは単調な作業を人手で行わなければならず、時間のかかるとても骨の折れる作業でした。そこで私たちは、その作業を軽減するために、GUIテストの自動化に取り組んできました。 発表では、GUIテストを行うまでの経緯と私たちの取り組み、そし
ここまでスレッドのサンプルを書いてきたのですが、主にプログラムがみにくくなるとか、めんどいとか、動くからえぇやんという理由で、やるべきことをやってないところがあります。 スレッドからのSwing操作とwaitの処理です。 Swingはシングルスレッドモデルで実装されているので、GUIスレッドとは別のスレッドからSwingを操作するべきではありません。EventQueue#invokeLaterなどを使って処理をGUIスレッドにのせる必要があります。(SwingUtilities#invokeLaterは内部でEventQueue#invokeLaterを呼び出しているだけです) 今回の一連のサンプルで使っているJTextField#setTextや、今回は使ってないけどよく使うJTextArea#appendなど、JTextComponentのテキスト操作に関しては、幸いスレッドセーフなの
EventQueue#invokeLaterなどを使えということなのですが、実際の処理をいちいちinvokeLaterすると処理の記述が分断して大変みにくくなります。記述の美しさよりも処理の安全さ、とはいえ、これはあんまり。 ということで、Java SE 6からはSwingWorkerというクラスが用意されていて、便利に使えます。 使い方を図解すると、こう 関係ないけど、今回のサンプルはムダにNimbusです。 SwingWorkerは、Genericsパラメータをふたつ指定します。一つ目が処理結果の型で、二つ目が途中経過の型です。 new SwingWorker<Integer, int[]>() SwingWorkerで実装するべきなのは、doInBackgroundメソッドです。ここでは、別スレッドで動かしたい処理を記述します。戻り値の型は、Genericsで一つ目に指定した型になり
NTTデータ先端技術勤務。国産のオープンソースプロジェクトProject Amaterasのオーナーであり,SeasarプロジェクトやClick Frameworkでもコミッタを務めている。著書に「入門Wiki」「Eclipseプラグイン開発徹底攻略」(いずれも毎日コミュニケーションズ発行)などがある。 株式会社DTS ネットワーク事業本部 プロジェクトマネージャ。Javaを中心にフレームワーク開発や開発プロセス定義など幅広く活躍中。StrutsIDEコミッタ。著書「まるごとEclipse! Vol.1」(発行:インプレスコミュニケーションズ)。 Javaは現在,Webアプリケーション開発においてサーバーサイドの実装言語として広く用いられています。とはいえ,クライアント開発ができないわけではありません。従来より,Webブラウザ内で動作するAppletや,Java Web Startでクライ
Swing Application Framework概要 はじめに Swing Application Frameworkとは Swing Application Frameworkとは、複雑なGUIツールキットであるSwingライブラリの上で簡単にGUIアプリケーション・プログラムを作成するために提供されるフレームワークです。Swing Application Frameworkは、2008年リリース予定の次期Java Standard Edition(Java SE 7)に標準搭載することを目指してJava標準化プロセス(JCP:Java Community Process)においてJSR-296として仕様が策定され、そのリファレンス実装が現在開発されている途上です。 1998年にリリースされたJava 2(JDK 1.2)に標準搭載されているGUIツールキットSwingは、柔軟性が
Trail: Creating a GUI with Swing Lesson: Using Swing Components The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Dev.java for updated tutorials taking advantage of the latest releases. See Java Language Changes for a summary of updated lan
Swingはご存知Java標準のGUIツールキットだ。JREがインストールされていればプラットフォームを問わす利用できるため、JavaでのGUIアプリケーション開発に広く利用されてきた。以前は動作が非常に遅く、見た目がプラットフォーム・ネイティブなアプリケーションと異なることからデスクトップ環境との親和性が低いといった弱点もあったが、Javaのバージョンアップとともに改善されてきている。 JSR-296: Swing Application FrameworkではこのSwingを用いたアプリケーションの開発を支援するためのフレームワークの標準化が行われている。JSR-296はいまだ策定段階ではあるものの、スペックリードであるHans Muller氏によってプロトタイプ版がjava.netにて公開されている。 本稿ではこのプロトタイプ版の本稿執筆時点での最新版(0.20)について紹介していく
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated language features in Java SE 9 and subsequent releases. See JDK Release Notes for information about new features, enhancements, and removed or
ToDoリストの実装 プロジェクトの作成 今回は「ToDoList2」という名前のプロジェクトを作成します(第1回の“プロジェクトの作成”を参考にしてください)。 SwingAppMainクラスの作成 アプリケーションの起動および土台となるフレームの生成を担当するクラス「SwingAppMain」を作成します。 package swing.sample; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class SwingAppMain { /** * アプリケーションの起動 */ public static void mai
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く