我有一个类SheetGood,它扩展了Rectangle。目前我使用基于用户分辨率的绝对位置将这些SheetGoods放在屏幕上,但我想让布局管理员接管这方面。
为此,我想将一个SheetGood对象添加到JPanel,但不能因为SheetGood不扩展JComponent。
关于如何解决这个问题的任何想法?
// //编辑 如果我强制我的程序以特定大小运行并删除调整大小选项,我会遇到问题吗? 即,固定大小为1280x1024所以我可以继续放置SheetGoods我是怎样的,而不必担心当布局管理器移动它们时其他控件剪切它们。
答案 0 :(得分:0)
要使用绝对定位,请勿使用布局管理器。您应该将布局设置为null。
我建议:将JPanel扩展为矩形并设置背景颜色,并将边界设置为您想要放置的位置。
static class MyRectangle extends JPanel {
int x,
y,
width,
height;
Color bg;
public MyRectangle(int x, int y, int width, int height, Color bg) {
super();
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.bg = bg;
setBounds(x, y, width, height);
setBackground(bg);
}
}
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("Test rectangle");
MyRectangle rect1 = new MyRectangle(10, 10, 90, 90, Color.red),
rect2 = new MyRectangle(110, 110, 90, 90, Color.yellow);
JPanel contentPane = (JPanel)frame.getContentPane();
contentPane.setLayout(null); //to make things absolute positioning
contentPane.add(rect1);
contentPane.add(rect2);
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}