Java 为什么重新绘制时JPanel会调整大小?
我的代码有一个问题:当我运行应用程序时,会显示添加到另一个JPanel的JPanel,但当父面板重新绘制时,子面板的大小会调整为10x10或类似的大小。 这是我的密码:Java 为什么重新绘制时JPanel会调整大小?,java,swing,resize,jpanel,repaint,Java,Swing,Resize,Jpanel,Repaint,我的代码有一个问题:当我运行应用程序时,会显示添加到另一个JPanel的JPanel,但当父面板重新绘制时,子面板的大小会调整为10x10或类似的大小。 这是我的密码: public class GUIv2 extends JPanel { Vector<Section> sections = new Vector<>(); String backgroundImage = ""; public GUIv2(String bgImage) { backgroun
public class GUIv2 extends JPanel {
Vector<Section> sections = new Vector<>();
String backgroundImage = "";
public GUIv2(String bgImage) {
backgroundImage = bgImage;
}
public void addSection(int id, int x, int y, int width, int height) throws RuntimeException {
for(Section sec : sections) {
if(sec.getId() == id) {
throw new RuntimeException("The given ID is already registered.");
}
}
sections.add(new Section(id));
sections.lastElement().setBounds(100, 100, 100, 100);
this.add(sections.lastElement());
this.repaint();
}
public Section getSection(int id) {
for(Section sec : sections) {
if(sec.getId() == id) {
return sec;
}
}
return null;
}
protected void paintComponent(Graphics g) {
try {
g.drawImage(ImageIO.read(new File(backgroundImage)).getScaledInstance(getWidth(), getHeight(), 100), 0, 0, null);
}
catch(IOException e) {
}
}
}
public类GUIv2扩展了JPanel{
向量部分=新向量();
字符串backgroundImage=“”;
公共GUI v2(字符串bgImage){
背景图像=背景图像;
}
public void addSection(int-id、int-x、int-y、int-width、int-height)抛出RuntimeException{
用于(第节:节){
如果(sec.getId()==id){
抛出新的RuntimeException(“给定ID已注册”);
}
}
增加(新的章节(id));
sections.lastElement().setBounds(100100100100);
this.add(sections.lastElement());
这个。重新绘制();
}
公共部分getSection(内部id){
用于(第节:节){
如果(sec.getId()==id){
返回秒;
}
}
返回null;
}
受保护组件(图形g){
试一试{
g、 drawImage(ImageIO.read(新文件(背景图像)).getScaledInstance(getWidth(),getHeight(),100),0,0,null;
}
捕获(IOE异常){
}
}
}
我希望有人能帮我解决这个问题。提前感谢该代码有几个大问题:
null
布局的容器(JPanel)中的组件调用setBounds(…)
。这意味着,setBounds(…)
可以按照您最初的要求显示,但不能在以后显示,或者根本不遵循它setBounds(…)
。几乎总是(99%的时间)让组件的首选大小和容器的布局管理器处理组件的大小paintComponent
super.paintComponent(g)
,从而阻止Swing清理脏像素