ERWEITERT was Tom sagte ...
eine Komponente zu ermöglichen, sich unsichtbar zu machen noch seinen Platz zu halten, können Sie es in einem Cardlayout zusammen mit einem leeren Label und nur Swap, die sichtbar ist.
Sie können eine Klasse erstellen, um dies für Sie zu tun, wie folgt Das Haupt zeigt nur ein Beispiel, wo, wenn Sie auf eine Schaltfläche klicken, es gelöscht wird, während seine Position beibehalten wird. Ich gebe showComponent/hideComponent und setVisible (t/f) - hängt von der Art, die Sie mögen.
Dies ist möglicherweise nicht genau das, was Sie suchen, aber könnte ein nützliches Stück für einen Teil Ihrer Anwendung sein.
public class Placeholder extends JPanel {
private static final long serialVersionUID = 1L;
private CardLayout cardLayout_;
public Placeholder(JComponent component) {
cardLayout_ = new CardLayout();
setLayout(cardLayout_);
add(component, "visible"); // the component
add(new JLabel(), "hidden"); // empty label
}
public void showComponent() {
cardLayout_.show(this, "visible");
}
public void hideComponent() {
cardLayout_.show(this, "hidden");
}
public void setComponentVisible(boolean visible) {
if (visible)
showComponent();
else
hideComponent();
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new GridLayout(2,0));
for (int n = 1; n < 10; n++) {
JButton b = new JButton(n + "");
final Placeholder placeholder = new Placeholder(b);
f.add(placeholder);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
placeholder.hideComponent();
}
});
}
f.pack();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
GridLayout? GridBagLayout? Ich bin mir nicht sicher, ob ich die Frage genau verstehe. Wie bewegen sich die Knöpfe und ändern sich die Größe? –