我有一個複雜的JFrame。它有一個在絕對佈局中的主面板,其中包含按鈕和標籤,一對jFreeCharts和一個帶有特定GridLayout的第二個(子)面板,我填充了多個標籤。如何調整/縮小複雜的JFrame
有無論如何調整/放大整個事情嗎?
pack() does not work because of the layout.
有沒有更基本的「ScaleTheWholeWindow」方法?
我有一個複雜的JFrame。它有一個在絕對佈局中的主面板,其中包含按鈕和標籤,一對jFreeCharts和一個帶有特定GridLayout的第二個(子)面板,我填充了多個標籤。如何調整/縮小複雜的JFrame
有無論如何調整/放大整個事情嗎?
pack() does not work because of the layout.
有沒有更基本的「ScaleTheWholeWindow」方法?
我的評論代碼看起來像這樣something
。我沒有測試這個,這更多的是一個想法。用代碼更容易表達我的想法。
public void scaleContainer(Container c, double xFactor, double yFactor)
{
Component[] eles = c.getComponents();
for(int i = 0 ; i < eles.length ; i++)
{
eles[i].setBounds(new Rectangle(
(int) eles[i].getX() * xFactor,
(int) eles[i].getY() * yFactor,
(int) eles[i].getWidth() * xFactor,
(int) eles[i].getHeight() * yFactor))
if(eles[i] instanceof Container)
{
if(((Container)eles[i]).getLayout() == null) //If the container has it's own layout, let it assign it's own components
scaleContainer((Conatiner)eles[i], xFactor, yFactor);
}
}
}
如果你想一個固定數量的像素,而不是一個因素比例的,那麼你需要計算的因素。因子是1 + (extraWidth/previousWidth)
(高度相似)
我不知道有一種方法可以做到這一點,但更好的方法是將函數設置爲每個元素的寬度/高度爲當前寬度/高度的百分比,這樣你會總是得到相同的佈局,而不是你所要求的基本佈局。
您可以循環遍歷jframe中的所有元素,將它們的位置值和大小值乘以某個因子。然後遞歸地爲框架中的每個容器執行相同的操作。問題在於,你會得到非整數。你可能想要考慮如何解決這個問題。 在一天結束時,擺動是基於佈局的。你不應該使用絕對佈局。 – Cruncher
請勿使用AbsoluteLayout! – camickr
@camickr但是,如果我不使用AbsoluteLayout - 我怎麼能得到一個屏幕,看看我想要它? – ManInMoon