java
ImageViewer.java public class ImageViewer { public static void main(String[] args) { if (args.length > 0) javax.swing.JOptionPane.showMessageDialog(null, null, args[0], 0, new javax.swing.ImageIcon(args[0])); } } せっかく画像をIconとして持…
ImageViewer.java public class ImageViewer { public static void main(String[] args) { if (args.length > 0) javax.swing.JOptionPane.showMessageDialog(null, new javax.swing.JLabel(new javax.swing.ImageIcon(args[0]))); } } 画面より大きいサイズ…
別にJavaBeansでないと利用できないわけではなし DingEvent.java import java.beans.PropertyChangeEvent; public class DingEvent extends PropertyChangeEvent { public DingEvent(Object source) { super(source, null, null, null); } } DingListener.ja…
まあ普通に Bean.java import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; public class Bean implements Serializable { private String property; private PropertyChangeSupport support…
double d = 1.0; System.out.println(d); の結果は 1.0になります。特にこれで問題ないのですが、double型の値が整数に等しい時には整数のプリミティブ型のように 1の表示がほしい場合が。 この表示はString#valueOf(double)の結果なので、方針としては、値…
public class Foo<T> { private Bar<T> x; private class Bar<T> { Bar<T> y = x; T z; } } これはコンパイルエラーになります。 Foo.java:5: 互換性のない型 検出値 : Foo<T>.Bar<T> 期待値 : Foo<T>.Bar<T> Bar<T> y = x; ^ エラー 1 個 期待される型と検出された型が同じですが互換性</t></t></t></t></t></t></t></t></t>…
コンパイルでエラーメッセージが出てから、しまったと思って慌てて修正です。去年の今の季節に似たようなことをやったというのにコンパイルする前に気が付こう。 コンパイルできない CallSign.java import java.util.HashMap; import java.util.Map; public …
Javaに限らず多くのプログラミング言語の初歩的な学習の中でコンソールから入力を受け取りその情報を元にコンソールに何らかの出力をするというテーマはよく見かける。入力から出力への簡単な情報加工の過程を制御構造その他の言語の基本的な部材で実装して…
センタリングするレイアウトマネージャのインスタンスは複数のコンテナインスタンスで共有しても大丈夫のはず。 import java.applet.Applet; import java.awt.*; import static java.awt.Color.*; public class Test2 extends Applet { @Override public voi…
Container#getComponents()で得られるComponent配列の最初の要素をその推奨サイズでContainerの中央、正確にはContainerのInsetsの中央に配置するレイアウトマネージャ。他のComponentは描画されないようにサイズが0に設定されます。たいていのコンテナクラ…
JTableをJScrollPane内に入れた場合、列名を表示している欄はカラムヘッダで実現されていますので、ちょっとだけ長いスクロールバーが使えます。 import javax.swing.*; public class Table { public static void main(String[] args) { SwingUtilities.invo…
ちょっとだけ長いスクロールバーを作りましたが垂直スクロールバーだけだったので、水平のほうのスクロールバーも少し長めになるScrollPaneLayoutを作ってみました。 ExteScrollPaneLayout.java import java.awt.Component; import java.awt.Container; impo…
JScrollPaneのビューポートのビューを表示するためのデータを提供するコンポーネントは軽量コンポーネントであれば、それを持つJScrollPaneはそれなりに良しなに動作してくれます。でも、そのコンポーネント次第では思ってもみない動作になることがあります…
ComponentOrientationを見て定数で処理の切り替えを判断ちゃ駄目なのに、まさしくそういうことをやってますね。ということで、ComponentOrientation#isLeftToRight()を使うように変更です。ScrollPaneLayoutWithLongVSB.javaの47行目の if (pane.getComponen…
JScrollPaneはビューポート区画の外側、スクロールバーの反対側に行ヘッダや列ヘッダを付けることができます。ただし、例えば列ヘッダであればその幅はビューポート区画の幅と同じ、垂直スクロールバーであればその高さはビューポート区画の高さと同じになり…
元の背景色を維持して文字色だけを変える版。変更部分はわずかなので差分だけでもよかったのですが最終版なので一通り。ついでに画面制御シーケンスによる実装も。使用例のTest.javaはインタフェースを変えていないので前日のをそのままで。 ConsoleText.jav…
プラットフォーム依存の部分がネイティブライブラリに追い出されているのに、Java側のクラス定義にそれが漏れ出しているところがあるので、帰りの機内で暇つぶしに手直し。 ConsoleText.java package jp.ne.hatena.misuzukamio.console; import java.util.Co…
飛行機の中で暇つぶしにちょっと変えました。Java側のコード量がこえふとってます。Javaでできることを無理に外部でやる必要はないのでこんな感じに。ついでに余計な機能も付けてみたり。 ConsoleText.java package jp.ne.hatena.misuzukamio.console; publi…
ちょっとした処理をしてテキスト表示するJavaアプリケーションを作り、Windowsのコマンドプロンプト上で使っていたのですが、出力するものに合わせてテキスト色を変えられれば使い勝手が良くなる感じ、と思ったのが事の始まり。 とはいえ、コマンドプロンプ…
列挙型の各列挙定数は列挙型のロード時にインスタンス化される。列挙型にプログラマが追加で定義した静的初期化子の内容は、この列挙定数のインスタンス化後に実行される。追加の静的初期化子よりも前にコンパイラが列挙定数のインスタンス化を行う静的初期…
JNI自体滅多に使わないし、さらにネスト型にnativeメソッドを定義するようなことがなかったので気がつかなかったけれど、 package foo; public class Outer { public class Inner { public native void bar(); } } からWindows用のJDK5のjavahでヘッダファイ…
ちょっと調べ物でドロップしたりペーストしたりしたもののDataFlavorを見るために。canImportは常にtrueを返して何でも受け入れ、importDataは常にfalseを返すように。JDK6用。5ならTransferHandlerの2つのメソッドを古い版に。importリストに入っていないTr…
HttpServerからのレスポンス本体が変だとふと気付く。妙な数字やアルファベットがレスポンスの前後に付いてる。って、これはchunked transfer encodingのデコードミスの症状だ。どうやら、クライアントがHTTP/1.0でリクエストしているのに、それを無視してHt…
JSR-223なスクリプトエンジンを作ってみる。台本をそのまま標準出力に出すスクリプト言語(?)EchoScriptです。 EchoScriptEngine.java package jp.ne.hatena.misuzukamio.script.echoscript; import java.io.*; import javax.script.*; public final class…
Xcodeなんて重くてやってられないので、ターミナルで直接gccを叩いてJNI用に共有ライブラリを作ってみようと、ふと。でも、-sharedがないと怒られてしまってしょんぼり。結局、OSXでのオプションは-sharedではなく-dynamiclibでした。 こんな感じ。 gcc -dyn…
環境を汚すのも何なのでJava 3Dのバイナリzipを適当な場所に展開するだけにして、コンパイルや実行時にコマンドラインオプションでjarや共有ファイルを指定する方法を選択。使用時だけクラスパス等を設定する手もあるけど。 Java 3D プロジェクトページから…
いつの間にか出てました。JDK 6の正式版がリリースされてからというもの、http://java.sun.com/からJDK 5.0のダウンロードページへ辿る道がよく分からなくなっているんですけど。
Mustangが正式リリースされているわけではあるけれど、Win9xをサポートしていないので、ちょっとイヤ。あまり便利そうな機能とか面白そうな仕組みとかが見当たらないのもマイナス評価。
とうとう10に。このまま5.0は5.0のままMustangへ行くのかしらん。
https://duke.dev.java.net/ ライセンスは修正BSDライセンス(= MITライセンス)らしいです。 ってJavaそのものの方の話題はしない方向で。