JavaでSwingを使用してGUIを作成しようとしています。動的に要素をJScrollPanelに追加する方法
「追加」ボタンを押すと、JPanelが作成され、GUIの幅がいっぱいになります。 JPanelの内部には、特定の詳細(名前、ユーザーIDなど)を示すFlowLayoutを使用してJLabelが配置されます。その後Addボタンを押すたびに、直前に新しいJPanelを追加して、JScrollPaneが必要に応じて垂直スクロールバーをアクティブにするようにします。基本的には、JScrollPaneがその中に新しいJPanelを動的に追加できるようにします。
しかし、私はこれをしようとするいくつかの問題がありました。 JScrollPane内のパネルに使用するLayoutManagerを特定できません。私はGridlLayoutを使用しようとしましたが、JScrollPane全体を隠蔽するのに十分なJPanelがある場合、GridLayoutは新しいJPanelで以前のJPanelの下に追加するのではなく、新しい列を作成します。これを達成するために私は何をすべきですか?ここに私が持っているもののいくつかのイメージと、私が何をしたいのかの例があります。ここで
私は起こるしたいものです。
任意の助けをいただければ幸いです、事前にあなたに感謝! :)
EDIT:私はGridLayoutで試したコードの例です。
public Window() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 701, 400);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel buttonPanel = new JPanel();
contentPane.add(buttonPanel, BorderLayout.SOUTH);
JButton btnAdd = new JButton("Add");
buttonPanel.add(btnAdd);
JScrollPane scrollPane = new JScrollPane();
contentPane.add(scrollPane, BorderLayout.CENTER);
JPanel systemsPanel = new JPanel();
scrollPane.setViewportView(systemsPanel);
systemsPanel.setLayout(new GridLayout(8, 1, 0, 0)); //8 rows for now
for (int i = 1; i < 50; i++) {
systemsPanel.add(new JButton("test"), "cell 0 " + i);
}
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2 - this.getSize().width/2, dim.height/2 - this.getSize().height/2); //Center the Frame
}
は[MCVE]の有効なを作成して投稿してくださいすぐに最高のヘルプを得るための最良のチャンスです。このコードは小さくて自立しており、あなたの質問にはリンクではなくコード形式のテキストとしてここに投稿します。がんばろう! –
GridLayoutは正常に動作するはずですが、正しく使用していない可能性があります。ここでもコード内でどのように使用するかを示してください。また、あなたはJTableを使用したくないと確信していますか? –
あなたは間違っています。あなたが間違ってやっていることや正しい仮定がないことがわかります。再度、関連するコードを表示してください。そして、[ヘルプ]セクション、特にこのサイトで質問する方法のサブセクションをご覧ください。 –