是非常簡單的解決方案只覆蓋和返回getMinimumSize()
例如
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class CustomComponent extends JFrame {
private static final long serialVersionUID = 1L;
public CustomComponent() {
setTitle("Custom Component Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void display() {
add(new CustomComponents(), BorderLayout.NORTH);
add(new CustomComponents(), BorderLayout.CENTER);
add(new CustomComponents(), BorderLayout.SOUTH);
add(new CustomComponents(), BorderLayout.EAST);
pack();
// enforces the minimum size of both frame and component
setMinimumSize(getMinimumSize());
setPreferredSize(getPreferredSize());
setVisible(true);
}
public static void main(String[] args) {
CustomComponent main = new CustomComponent();
main.display();
}
}
class CustomComponents extends JLabel {
private static final long serialVersionUID = 1L;
@Override
public Dimension getMinimumSize() {
return new Dimension(200, 100);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(300, 200);
}
@Override
public void paintComponent(Graphics g) {
int margin = 10;
Dimension dim = getSize();
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(margin, margin, dim.width - margin * 2, dim.height - margin * 2);
}
}
請提供一個[sscce](http://sscce.org/),展示您描述的問題。 – trashgod
*「我在這裏閱讀了很多有關NetBeans的投訴」*我對使用任何IDE的人無任何問題,無論他們想要什麼插件。但我反對對代碼進行模糊的描述,或者不得不看看GUI構建者通常流失的臃腫廢話。此外,如果一個問題是「如何製作我的IDE ..?」,那麼我就沒有這個問題了。有更好的事情要做,而不是提供對IDE的支持。即使是提問者需要提及IDE的含義,也增加了一些懷疑,他們不知道他們在做什麼。 –
這些都在LayoutManager中......它們可以自由調整尺寸,但是它們是專門設計的。選擇一個行爲像你想要的經理。 – kleopatra