1

最初に、私が話しているのは J2ME の TextField (javax.microedition.lcdui.TextField) であり、AWT の TextField (java.awt.TextField) ではないことを強調したいと思います。

これが J2ME で可能かどうか教えていただけますか? TextField のフォント (フォント ファミリー、フォント サイズ、フォントの色) を変更したいのですが、フォームに表示される幅も変更したいと考えています。setMaxSize() を使用してみましたが、これにより TextField に含めることができる文字数も制限されます。私が欲しいのは、その文字数を制限せずに TextField の幅を変更することです。

これらができなければ、プログラマーが J2ME アプリケーションの見栄えを良くすることはできないと思います。または、少なくとも、これらの機能をサポートする別のコントロールが必要です。

4

2 に答える 2

4

J2ME の TextField などのコンポーネントをカスタマイズする場合は、LWUIT (Light Weight User Interface Toolkit) を使用することを強くお勧めします。Java モバイル用の LWUIT を使用して優れた UI を作成し、必要に応じてカスタマイズできます。その名の通り、本当に軽いです。

LWUIT で TextField をカスタマイズする簡単なコードは次のとおりです。

TextField myTextField = new TextField();
myTextField.getStyle().setPadding(9,9,9,9); // Top , Left , Bottom , Right padding
myTextField.getStyle().setMargin(7,7,7,7);  // Top , Left , Bottom , Right padding
myTextField.getStyle().setFont(*use the font whatever you wish*);

注 : アプリケーションのルック アンド フィールを変更するためのあらゆるヘルプである .RES ファイルとリソース エディタについて参照してください。フォントを .RES ファイルにインポートして、コードで使用できます。

于 2013-03-28T05:12:16.197 に答える
2

Java ME で TextField の幅とフォントを変更することはできません。このクラスのAPI Javadocには、フォントに関連するものは何もありません (実際、これらのドキュメントでは、フォントという言葉自体について言及されていません)。

これらができなければ、プログラマーが J2ME アプリケーションの見栄えを良くすることはできないと思います。

その通りですが、この制限の理由は、TextField やその他の高レベル UI API が、プログラマーが簡単で移植性の高いコードを記述できるようにすることを目的としているためです (大画面/小画面で使用するフォントの詳細はシステムに任せます)。

これは、 lcdui package API docsのセクションStructure of the MIDP UI APIでかなりよく説明されています。

高レベル API は、クライアント パーツが MID で実行されるビジネス アプリケーション用に設計されています。これらのアプリケーションでは、デバイス間の移植性が重要です。この移植性を実現するために、高レベル API は高レベルの抽象化を採用し、ルック アンド フィールをほとんど制御しません。この抽象化は、次の方法でさらに明示されます。

  • MID のディスプレイへの実際の描画は、実装によって実行されます。アプリケーションは、コンポーネントの外観 (形状、色、フォントなど) を定義しません。
  • ナビゲーション、スクロール、およびその他の基本的な対話は実装によってカプセル化され、アプリケーションはこれらの対話を認識しません。
  • アプリケーションは、特定の個々のキーなどの具体的な入力デバイスにアクセスできません。

言い換えれば、高レベル API を使用する場合、基礎となる実装がデバイスのハードウェアとネイティブ UI スタイルに必要な適応を行うと想定されます...

フォントに関しては、高レベルの UI API クラスのやなどの選択実装がいくつかの機能を備えていますが、これらはかなり制限されています。興味がある場合は、詳細について API ドキュメントを参照してください。ListChoiceGroup


探している機能に完全にアクセスするには、上記のパッケージ ドキュメントで説明されている API の「低レベル」部分を調べてください。

この API は、グラフィック要素の正確な配置と制御、および低レベルの入力イベントへのアクセスを必要とするアプリケーション向けに設計されています。一部のアプリケーションは、特別なデバイス固有の機能にアクセスする必要もあります... 低レベル API は特定のデバイスに固有の詳細にアクセスする手段を提供するため、低レベル API にプログラムするアプリケーションは移植可能であるとは限りません。 ...

特に、Graphicsクラスには、フォントを取得および設定するメソッドがあり、それぞれ呼び出されgetFontますsetFont

ちなみに、 Graphics が提供する機能は、CustomItem APIを使用して Form 内に「埋め込む」ことができます。

于 2013-03-27T22:16:26.353 に答える