GridBagLayoutを使用してJComboBoxをJPanelに配置すると、最長のJComboBoxアイテムが完全に表示されず、代わりに「...」の一部が表示されます。
たとえば、「HealthcareIngredient」の場合は「HealthcareIngred...」と表示されます。
こちらのスクリーンショットをご覧ください。
コードは次のようなものです。
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つの解決策を見つけました:
- JComboBoxのgetPreferenceSizeを上書きしますが、少し面倒です。
- 以下のように、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
どうもありがとう