gpt4 book ai didi

java - 将 JPanel 添加到 JFrame 后未显示

转载 作者:行者123 更新时间:2023-11-29 08:06:11 24 4
gpt4 key购买 nike

我必须设置一个基本的 JAVA 应用程序,包括基于 swing 的 GUI。我的想法是创建一个 JFrame 和不同的 JPanel,并根据用户输入更改显示的 JPanel。运行我的应用程序后,会显示 JFrame,但不会显示 JPanel 的内容。我认为到这里它应该是直截了当的......但它似乎不是。希望你能给我一个提示:)

这是我的主要内容:

public class Client {
public static void main(String[] args) {
MainWindow window = new MainWindow();
window.setVisible(true);

LoginView pane = new LoginView();
window.getContentPane().add(pane);

window.invalidate();
window.repaint();
}
}

我的主窗口:

package client;

public class MainWindow extends javax.swing.JFrame {
public MainWindow() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 352, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 250, Short.MAX_VALUE)
);
pack();
}
}

我的登录 View :

package client.views;

public class LoginView extends javax.swing.JPanel {
public LoginView() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel1.setText("Login");
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)
.addContainerGap(345, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)
.addContainerGap(264, Short.MAX_VALUE))
);
}
private javax.swing.JLabel jLabel1;
}

最佳答案

除了调用 revalidate()repaint(),你知道另一件事,我会做的是而不是调用 add() 为当前内容面板设置一个新面板。

我认为您的问题与将组件添加到当前内容 Pane 的方式不正确有关。我认为这里就是这种情况,因此,请使用 setContentPane() 方法。

关于java - 将 JPanel 添加到 JFrame 后未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11055297/

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