Мой вопрос касается свинг-программирования. Я хочу увеличить компонент (компонент x), удалив его из его родительской панели (компонент a) и добавив его в один из родительских компонентов компонента a (компонент b). Перед этим я вызываю setVisible (false) для всех компонентов в b. После этого я хочу вернуть это обратно, удалив его из b и добавив a.
После этого размер всех компонентов больше нельзя будет изменить.
Почему так?
Простой пример:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
public class SwingTest {
private static ViewPanel layer1;
private static JFrame frame;
private static JTabbedPane tabbedPane;
private static ViewPanel root;
public static void main(String[] args) {
frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.setMinimumSize(new Dimension(800, 600));
root = new ViewPanel();
root.setBackground(Color.blue);
root.setPreferredSize(new Dimension(400, 600));
root.setLayout(new BorderLayout());
root.add(new JLabel("blue area"));
layer1 = new ViewPanel();
layer1.setBackground(Color.red);
layer1.setPreferredSize(new Dimension(400, 600));
layer1.setLayout(new BorderLayout());
tabbedPane = new JTabbedPane();
tabbedPane.add("A", new JLabel("A label"));
tabbedPane.setPreferredSize(new Dimension(400, 600));
layer1.add(tabbedPane);
root.add(layer1);
frame.add(root, BorderLayout.NORTH);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
Thread t = new Thread() {
@Override
public void run() {
try {
Thread.sleep(8000);
System.out.println("start");
for (Component c : root.getComponents()) {
c.setVisible(false);
}
layer1.remove(tabbedPane);
root.add(tabbedPane);
Thread.sleep(8000);
root.remove(tabbedPane);
layer1.add(tabbedPane);
for (Component c : root.getComponents()) {
c.setVisible(true);
c.repaint();
}
} catch (InterruptedException e) {
//...
}
}
};
t.start();
}
}
ViewPanel
отсутствует. - person trashgod   schedule 16.06.2010