2012-02-05 8 views
1

私は、クラスプロジェクト用のピザデリバリシミュレータを設計しています。私のチームと私は大部分をやっていますが、私たちはGUIに苦労しています。JScrollPaneの中にJPanelを表示する方法は?

注文に商品を追加する必要があります。 Add itemボタンをクリックするたびに、新しいAddItemPanel(JPanelを拡張して作成したパネル)が作成され、JScrollPaneに追加されます。

私が実行している問題は、1つのAddItemPanelをscrollPaneに追加することだけです。彼らが最初のものの下に隠されているかどうか、私が何かばかげたことをやっているのかどうかはわかりません。ここで

は、関連するコードです:

JPanel itemPanel = new JPanel(new GridLayout(0, 1)); 

JViewPort viewPort = new JViewport(); 
viewPort.setLayout(new GridLayout(0, 1)); // not sure if I need this line 
JScrollPane scrollPane = new JScrollPane(viewPort); 
itemPanel.add(scrollPane); 

// other stuff 

JButton addItemButton = new JButton("Add Item"); 
addItemButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     viewPort.add(new AddItemPanel()); 
     validate(); 
    } 
}); 

だから私の質問は以下のとおりです。これは、JScrollPaneにしても、可能ですか?もしそうなら、どうすればいいですか?もしそうでなければ、どうすれば似たようなことを達成できますか?

(PS。私は、彼らが説明するのに有用である場合には、スクリーンショットをリンクしています。)あなたは、そのJPanelに追加のパネルを追加、JScrollPaneJPanelを追加する必要が

screen shot 1 screen shot 2

+0

私はビューポートのレイアウトを設定する必要はありませんでしたし、これは良いことではないと思われます。 –

+0

['ListDialog'](http://stackoverflow.com/a/5760093/230513)も参照してください。 – trashgod

答えて

3

JScrollPanelは1人の子供しか管理できません。

3

私が考えることができる最も簡単で最も簡単な解決策は、JScrollPaneによって保持されているJListまたはJTableを使用することです。これらの人は、私が思うよりもはるかに柔軟性があり、正しいセルレンダラーを使用すれば、かなり複雑なデータを表示できます。これを行うことができない場合は、JScrollPaneのビューポートにGridLayoutを使用するJPanelを保持させます。しかし、ビューポートのレイアウトを混乱させないでください。

関連する問題