4

GridBagLayoutを使用してJComboBoxをJPanelに配置すると、最長のJComboBoxアイテムが完全に表示されず、代わりに「...」の一部が表示されます。

たとえば、「He​​althcareIngredient」の場合は「HealthcareIngred...」と表示されます。

こちらのスクリーンショットをご覧ください。

JComboBox幅の問題

コードは次のようなものです。

JPanel infoPanel = JPanel(new GridBagLayout());            
dataTypeCB = new JComboBox(dataTypeList.toArray());
infoPanel.add(dataTypeCB, new GridBagConstraints(1, 1, 1, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0, 0));

私はすでに2つの解決策を見つけました:

  1. JComboBoxのgetPreferenceSizeを上書きしますが、少し面倒です。
  2. 以下のように、JComboBoxをJPanelでラップしますが、ワープされたJPanelはいくつかのインテントを導入し、代わりにアライメントの問題を引き起こしますが、それでも完全ではありません。

2番目のソリューションのコード:

dataTypeCB = new JComboBox(dataTypeList.toArray());
JPanel dataTypeCBPanel = new JPanel();//make item can be fully show up.
dataTypeCBPanel.add(dataTypeCB, BorderLayout.CENTER);
infoPanel.add(dataTypeCBPanel, new GridBagConstraints(1, 1, 1, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0, 0));

私の質問は:この問題を解決する他の簡単な方法はありますか?

環境:JDK1.6_25(64ビットバージョン)を搭載したWindows 7

どうもありがとう

4

2 に答える 2

7

JComboBox.setPrototypeDisplayValue()を見てください

于 2012-06-25T04:50:52.010 に答える
0

この問題は自分で解決してください。

これを取得する理由は、LookAndFeelをアプリケーションに取り込む「JIDE」という名前のライブラリを使用しているためです。

JDKのデフォルトのルックアンドフィールでテストしましたが、この問題はないようです。次に、JIDEのルックアンドフィールに切り替えて、この問題を再現できます。

したがって、問題はLookAndFeelに関連していると思います。ComboBoxUIクラス。

したがって、私が本当に行う必要があるのは、独自のComboBoxUIを作成するか、JIDEライブラリのUIクラスを拡張することです。

申し訳ありませんが、これについて十分な情報を提供していませんでした。質問したところ、LookAndFeelに関連していることに気づきませんでした。

ありがとう

于 2012-08-31T03:57:55.707 に答える