gpt4 book ai didi

java - 动态图形用户界面尺寸

转载 作者:行者123 更新时间:2023-12-01 15:51:42 25 4
gpt4 key购买 nike

我在调整 GUI 应用程序中某些 JPanel 的大小时遇到​​了这个问题。该应用程序有一个主 JLayeredPane,其中包含 2 个其他 JPanel。在 JPanel 1 中,我有一个登录表单和一个按钮。当我按下按钮时,我想让第一个 JPanel 不可见,第二个 JPanel 可见(该面板比第一个面板大),但保持相同的大小。下面是一些相关代码。谁能帮我吗?

int width=300, height=300;
JLayeredPane mainPanel;
JPanel panel1;
JPanel panel2;

panel1.setBounds(0,0,width,height);
panel1.setBackground(new Color(251, 249, 236));
mainPanel.add(panel1, JLayeredPane.DEFAULT_LAYER);

panel2.setBounds(0, 0, width+200, height+200);
panel2.setBackground(new Color(255, 0, 0));
mainPanel.add(panel2, JLayeredPane.DEFAULT_LAYER);

以及单击的按钮代码:

setSize(width+200, height+200);
panel1.setVisible(false);
panel2.setVisible(true);
mainPanel.setSize(width+200, height+200);
mainPanel.validate();
mainPanel.repaint();

以下是 JLayredPane 的一些代码:

GroupLayout mainLayout=new GroupLayout(getContentPane());
getContentPane().setLayout(mainLayout);

mainLayout.setHorizontalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, width, GroupLayout.PREFERRED_SIZE))
);
mainLayout.setVerticalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, height, GroupLayout.PREFERRED_SIZE))
);

LE:

对于按钮:

setSize(width+200, height+200);

mainPanel.setSize(width+200, height+200);
mainPanel.remove(panel1);
mainPanel.remove(panel2);
mainPanel.add(panel2, JLayeredPane.DEFAULT_LAYER);
actualizare();
mainPanel.validate();
mainPanel.repaint();
validate();
repaint();

功能:

void actualizare(){
GroupLayout mainLayout=new GroupLayout(getContentPane());
getContentPane().setLayout(mainLayout);

mainLayout.setHorizontalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, width+200, GroupLayout.PREFERRED_SIZE))
);
mainLayout.setVerticalGroup(mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(mainLayout.createSequentialGroup()
.addComponent(mainPanel, GroupLayout.PREFERRED_SIZE, height+200, GroupLayout.PREFERRED_SIZE))
);

}

最佳答案

尝试在最后调用 validate() 和 repaint()。

关于java - 动态图形用户界面尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com