ねえ (: このフォーラムでヘルプを求めるのはこれが初めてなので、すべてが正しく行われていることを願っています
さて、私の問題は、赤でマークしたものです。私のJPanelは、BoxLayout.Y_AXIS方向のBoxlayoutを使用しています。それは正しい選択ではないと思います。JPanel (オンライン ユーザー)、JSeperator、および他の JPanel (管理者) を互いに分離させたくありません。私はそれらをお互いの真下に積み重ねたい。
GUI の写真: http://dl.dropbox.com/u/10049103/notcool.png
ある種の「接着剤」を使用できるはずだと聞いたことがありますが、意図したとおりに機能させることができませんでした。また、GridBagLayout を使用する必要があると聞きましたが、それは非常に複雑に思えます。もっと簡単な方法があれば非常にありがたいです。
マークされたJPanelのコードは次のとおりです(必要かどうかはわかりません):
package Client;
import Server.User;
import java.awt.BorderLayout;
import java.util.HashMap;
import java.util.Iterator;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
/**
*
* @author Sune
*/
public class OnlineUsersPanel extends JPanel {
private UserWindow owner; public void setOwner(UserWindow uw) { owner = uw; }
private HashMap<String, ShowUserPanel> userPanels = new HashMap<String, ShowUserPanel>();
public OnlineUsersPanel() {
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
this.add(addStart());
this.add(new JSeparator());
System.out.println("OnlineUsersPanel con called");
}
void addUser(User user) {
ShowUserPanel newPanel = new ShowUserPanel(owner, user.getUserName());
userPanels.put(user.getUserName(), newPanel);
this.add(newPanel);
owner.updateGUI();
}
void deleteUser(User user) {
ShowUserPanel toRemove;
for (Iterator i = userPanels.keySet().iterator(); i.hasNext();) {
String tempUserName = (String) i.next();
if (tempUserName.equals(user.getUserName())) {
toRemove = userPanels.remove(tempUserName);
this.remove(toRemove);
System.out.println("Fundet og fjernet");
break;
}
}
}
private JPanel addStart() {
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel("Online Users:"), BorderLayout.LINE_START);
p.add(new JLabel("mute:"), BorderLayout.LINE_END);
return p;
}
誰かがその接着剤を適切に使用する方法を教えてくれるか、これを行う良い方法を教えてくれることを願っています (: