是否有一個佈局管理器可以提供與Absolute Positioning相同程度的控制權? 但也可以自動調整大小?什麼地方可以使用相對座標來放置元素?替代絕對佈局?
Q
替代絕對佈局?
2
A
回答
3
GridBagLayout
是Swing中最靈活的標準佈局管理器,它可以實現任何你需要的任何東西,雖然遠不及你想象的那麼簡單,只需使用相對座標(你的意思是,我猜是0-100%相對於幀大小)。
您可能會發現GridBagLayout
here的官方文檔,其中也包含一些數字和示例。
你也可以查看開源MiG Layout,這樣更方便GridBagLayout
也有點強大。它是所有佈局經理的母親。
+0
'GridBagLayout'的用法和示例可以在這裏找到(http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html)。 – afsantos
3
JDK中最強大的佈局管理器是GridBagLayout
。然而,典型的UI包含面板的組合,其中每個UI都被配置爲使用不同的佈局。例如,整個窗口的邊框佈局,包含一組按鈕的面板的流佈局,複雜零件的GridLayout
或GridBagLayout
。
你也可以看看像MigLayout這樣的替代方案 - 非常強大的工具,可以創建幾乎任何你可以想象的視圖。
1
另一種選擇是使用SpringLayout(我個人喜歡GridBagLayout)。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import static javax.swing.SpringLayout.*;
public class SpringScaleTest {
public JComponent makeUI() {
SpringLayout layout = new SpringLayout();
JPanel p = new JPanel(layout);
p.setBorder(BorderFactory.createLineBorder(Color.GREEN, 10));
JLabel l1 = new JLabel("label: width=90%", SwingConstants.CENTER);
l1.setBorder(BorderFactory.createLineBorder(Color.RED, 1));
JButton l2 = new JButton("button: width=50%");
Spring panelw = layout.getConstraint(WIDTH, p);
SpringLayout.Constraints c1 = layout.getConstraints(l1);
c1.setX(Spring.constant(0));
c1.setY(Spring.constant(20));
c1.setWidth(Spring.scale(panelw, 0.9f));
p.add(l1);
SpringLayout.Constraints c2 = layout.getConstraints(l2);
c2.setWidth(Spring.scale(panelw, 0.5f));
layout.putConstraint(SOUTH, l2, -20, SOUTH, p);
layout.putConstraint(EAST, l2, -20, EAST, p);
p.add(l2);
return p;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() { createAndShowGUI(); }
});
}
public static void createAndShowGUI() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new SpringScaleTest().makeUI());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
相關問題
- 1. 替代佈局
- 2. android絕對佈局
- 3. Realtive佈局與絕對佈局
- 4. Webgrid替代佈局?
- 5. Android使用絕對佈局
- 6. Java GridBagLayout +絕對佈局
- 7. Dojo佈局,絕對位置
- 8. Xaml替代網格佈局
- 9. 替代佈局未應用
- 10. 自動佈局代替autoresizingMask
- 11. Xamarin形式絕對佈局而不是相對佈局
- 12. 絕對/相對定位佈局溢出
- 13. Flex中的絕對和相對佈局
- 14. 當需要絕對定位時替代佈局管理器的替代解決方案
- 15. 將絕對佈局組合成標準佈局
- 16. 絕對定位div的佈局問題
- 17. 絕對佈局還是其他選擇?
- 18. IE6佈局問題 - 絕對定位
- 19. 在JScrollPane中使用絕對佈局
- 20. 在Android佈局中絕對居中
- 21. ExtJS的網格reserveScrollbar與佈局 '絕對'
- 22. 絕對定位在佈局Android
- 23. 小程序是空的絕對佈局
- 24. 絕對佈局設置圖像位置
- 25. GridBag佈局或絕對定位?
- 26. 響應式佈局和絕對定位
- 27. 絕對佈局已被棄用
- 28. 使用絕對佈局有錯嗎
- 29. 4列的位置絕對佈局
- 30. 複雜的佈局絕對定位
'GridBagLayout' – Tdorno
從來只使用一個整個應用程序佈局管理,沒有替代嵌套佈局,不是真正的佈局管理,但對邏輯一個contaier分裂與幾個貨櫃不同,但使用相同的LayoutManager – mKorbel