因此,我有一个类将内容绘制到JPanel,但要实现此目的,我需要在构造函数中实例化多边形。但是我对此有些困惑。我创建JFrame并向其添加JPanel扩展类“ Field”,
public class mainSetup {
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setSize(600,600);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(new Field());
frame.pack();
}
}
这是JPanel的代码:
public class Field extends JPanel implements ActionListener{
public Field(){
System.out.println(getWidth());
}
@Override
public void paintComponent(Graphics g){
System.out.println(getWidth());
}
@Override
public void actionPerformed(ActionEvent arg0) {
repaint();
}
}
为什么paintComponent方法中的getWidth()调用返回594时,构造函数中的getWidth()调用显示为0?实际上-为什么这些数字都不是我期望的600?为什么它们会有所不同?
旋转组件在构建时还没有宽度。首先必须将其添加到容器中,然后布局管理器将为组件分配位置和尺寸。
至于为什么不是600而是594-每个摆动组件都有被边框占据的“插入”。它们的默认宽度取决于您的PLAF。在这种情况下,JFrame内容窗格左右两侧的插图大概为3和3像素,总计为6,则600-6 = 594。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句