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に小数点は要らない

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.io.Consoleクラスによるやりとり

Javaに限らず多くのプログラミング言語の初歩的な学習の中でコンソールから入力を受け取りその情報を元にコンソールに何らかの出力をするというテーマはよく見かける。入力から出力への簡単な情報加工の過程を制御構造その他の言語の基本的な部材で実装して…

それぞれのコンテナのためにnewしなくても

センタリングするレイアウトマネージャのインスタンスは複数のコンテナインスタンスで共有しても大丈夫のはず。 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の列名の横にも延ばす

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…

javax.swing.Scrollable

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のコマンドプロンプト上で使っていたのですが、出力するものに合わせてテキスト色を変えられれば使い勝手が良くなる感じ、と思ったのが事の始まり。 とはいえ、コマンドプロンプ…

列挙型と静的初期化子とnativeメソッド

列挙型の各列挙定数は列挙型のロード時にインスタンス化される。列挙型にプログラマが追加で定義した静的初期化子の内容は、この列挙定数のインスタンス化後に実行される。追加の静的初期化子よりも前にコンパイラが列挙定数のインスタンス化を行う静的初期…

ネストした型のnativeメソッド

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…

com.sun.net.httpserver.HttpServer (JDK 6 Update 6)

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…

MacOSX10.4 gccで共有ライブラリを作る

Xcodeなんて重くてやってられないので、ターミナルで直接gccを叩いてJNI用に共有ライブラリを作ってみようと、ふと。でも、-sharedがないと怒られてしまってしょんぼり。結局、OSXでのオプションは-sharedではなく-dynamiclibでした。 こんな感じ。 gcc -dyn…

Java 3D 1.5.0のセットアップ

環境を汚すのも何なのでJava 3Dのバイナリzipを適当な場所に展開するだけにして、コンパイルや実行時にコマンドラインオプションでjarや共有ファイルを指定する方法を選択。使用時だけクラスパス等を設定する手もあるけど。 Java 3D プロジェクトページから…

JDK 5.0 Update 11

いつの間にか出てました。JDK 6の正式版がリリースされてからというもの、http://java.sun.com/からJDK 5.0のダウンロードページへ辿る道がよく分からなくなっているんですけど。

Mustang

Mustangが正式リリースされているわけではあるけれど、Win9xをサポートしていないので、ちょっとイヤ。あまり便利そうな機能とか面白そうな仕組みとかが見当たらないのもマイナス評価。

JDK 5.0 Update 10

とうとう10に。このまま5.0は5.0のままMustangへ行くのかしらん。

Dukeがオープンソース化

https://duke.dev.java.net/ ライセンスは修正BSDライセンス(= MITライセンス)らしいです。 ってJavaそのものの方の話題はしない方向で。