我在其他 jPanel(panelB) 中添加了许多 jPanel (panelF)。 jPanelF 包含 jPanelC。
我已将布局设置为按如下方式添加它们:
PanelB.setLayout(new BoxLayout(this.PanelB, BoxLayout.PAGE_AXIS));
PanelF panelF1 = new PanelF();
PanelB.add(panelF1);
PanelF panelF2 = new PanelF();
PanelB.add(panelF2);
我在 jPanelC1 中设置了 visible false。但是 JPanelF2 保留了距离,不想留下空白
我想要的是当 JPanelC1 消失时。 jPanelF 之间保持距离而不是空白。 我尝试了 validate() 并更改了布局,但我失败了。怎么办? 非常感谢你。对不起我的英语
知道是否有类似 $("#panelC1").fadeOut("slow") 的东西?会很理想。
最佳答案
(这是垂直布局的演示,不是答案本身)。
根据我对您问题的理解,VerticalLayout
可能是首选解决方案...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.LineBorder;
import org.jdesktop.swingx.VerticalLayout;
public class VerticalLayoutTest {
public static void main(String[] args) {
new VerticalLayoutTest();
}
public VerticalLayoutTest() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
setLayout(new VerticalLayout());
JPanel outter = new JPanel(new BorderLayout());
outter.setBorder(new LineBorder(Color.BLACK));
outter.add(new JLabel("Outter 1"), BorderLayout.NORTH);
JPanel inner = new JPanel(new GridBagLayout());
inner.setBackground(Color.GREEN);
inner.add(new JLabel("Inner 1"));
outter.add(inner);
add(outter);
inner.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
Component component = e.getComponent();
component.setVisible(false);
component.invalidate();
component.validate();
revalidate();
repaint();
}
});
add(Box.createVerticalGlue());
outter = new JPanel(new BorderLayout());
outter.setBorder(new LineBorder(Color.BLACK));
outter.add(new JLabel("Outter 1"), BorderLayout.NORTH);
inner = new JPanel(new GridBagLayout());
inner.setBackground(Color.GREEN);
inner.add(new JLabel("Inner 1"));
outter.add(inner);
add(outter);
}
}
}
关于java - 消失时可调整大小的布局 Swing JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148603/