0
如何使用MigLayout,以便在pack()
後我可以看到JFrame
,其中包含所有子組件的合適大小,與邊界,插入和缺口?現在我看到一些元素被切斷,留下一半大小可見,但一半被切斷。[Miglayout]調整容器的大小以適應包含的所有組件的總大小,使用插入和間隙
如何使用MigLayout,以便在pack()
後我可以看到JFrame
,其中包含所有子組件的合適大小,與邊界,插入和缺口?現在我看到一些元素被切斷,留下一半大小可見,但一半被切斷。[Miglayout]調整容器的大小以適應包含的所有組件的總大小,使用插入和間隙
我只是想出瞭如何根據所有包含的組件的大小總和來保證容器的大小,而不用硬編碼任何東西。
創建JPanel panel
爲你的工作小組,而不是觸摸contentPane
。只需將其添加回contentPane
即可。 請勿觸摸contentPane
,這是關鍵。
設置的panel
佈局沒有硬編碼行高,列寬等,這可能會毀了佈局,因爲你的硬編碼的高度可能是更少或更多的它是必要的,留下錯誤的用一些大小線,並留下你的最後一行/列一半切斷。
將您的元素添加到panel
。添加它們時,您可以指定尺寸。我們不需要設置contentPane
的佈局。
最後,pack()
,setVisible(true)
如你所願。不需要setSize()
,setBounds()
等MigLayout會自動處理插頁和間隙。中提琴!
甲SSCCE:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import net.miginfocom.swing.MigLayout;
public class InsetsAndBorder extends JFrame {
public InsetsAndBorder() {
begin();
}
private void begin() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new MigLayout("insets 2 2 2 2, fillx, debug", "3[]3[]3[]3", "5[]5[]5[]5"));
JLabel label1 = new JLabel("1");
JLabel label2 = new JLabel("2");
JButton button = new JButton("No way!");
panel.add(label1, "cell 1 2, grow");
panel.add(label2, "cell 2 2, grow");
panel.add(button, "cell 0 1, grow");
getContentPane().add(panel);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
InsetsAndBorder frame = new InsetsAndBorder();
}
});
}
}
1)注:SCCEE→SSCCE(短,獨立的,正確的,實施例)。一個小錯誤。 2)否則,答案中的所有內容都是很好的信息。 - 很高興你把事情解決了。 :) –
謝謝,我從來沒有得到它的權利....感謝評論安德魯,美好的一天。 – FaithReaper
*「我從來沒有說得對。」*當談到正確的縮寫時,我有一個不公平的優勢。我寫了文件。 ;) –