jpanelにデータベースから動的にコンポーネントを追加しようとしていますが、フォームの制限を超えて拡張します画面)を水平に表示します。私は、BoxLayoutを持つパネルを使用しています。このPanelLayoutは、内部コンポーネントをx軸に配置します。私がしたいのは、フォームの境界線(またはコンテナパネルの境界線)のx軸上のコンポーネントの追加を制限することです。 コンテナのJPanelの最大サイズ(幅)を設定するにはフォームまたはパネルの枠内でコンポーネントを動的に追加する方法を制限する方法
- それは 仕事しませんでした:私がこれまで試した何 です。
- レイアウトマネージャを フローレイアウトに設定するには、x軸に無限に を展開します。
- スクロールペイン内にコンテナパネルを配置するにはこれは、 の水平スクロールバーを意味します。つまり、 は、フォームの境界である にコンポーネントを限定しません。
カスタムレイアウトを作成する必要がありますか?それより簡単なアイデアはありますか? 私のコードは次のようになります。
jpanelCases.setLayout(new BoxLayout(this.jpanelCases, BoxLayout.X_AXIS));
db = Database.getInstance();
List<Category> cats = db.getCategories();
for(Category c : cats){
JPanel jp = new JPanel();
//addition of other components to the newly created panel here
jpanelCases.add(jp);
}
私はフレームがレンダリングされる前にすべてが起こっていると仮定していますか?それ以外の場合は、revalidate()を呼び出さずにパネルにコンポーネントを追加すると表示されません。 – mre
はい、レンダリング前にフォームのコンストラクタで一度だけ追加されます。 – vkolias