gpt4 book ai didi

java - 为什么我的 JPanel 不显示?

转载 作者:行者123 更新时间:2023-12-01 13:30:42 31 4
gpt4 key购买 nike

所以我只是检查一下,当我单击按钮时,它不会显示我的 JPanel,知道为什么吗?

谢谢。

我想要第三堂课,非常感谢您的帮助 - 谢谢分配。

第一类 - JFrame 类。

import javax.swing.JFrame;

public class Frame {
public static void main(String[] args ) {
JFrame frame = new JFrame("JFrame Demo");
Panel panel1 = new Panel();

frame.add(panel1);


frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
frame.setVisible(true);

}
}

第二类 - 第 1 部分

import javax.swing.JPanel;
import java.awt.CardLayout;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Panel extends JPanel{
public Panel() {
setLayout(null);
final Panel2 panel2 = new Panel2();


JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

setVisible(false);
panel2.setVisible(true);


}
});
btnNewButton.setBounds(62, 197, 224, 122);
add(btnNewButton);
}
}

第三类 - 面板 2(我希望显示此内容)

import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.CardLayout;
import javax.swing.JTextField;


public class Panel2 extends JPanel {
private JTextField textField;
public Panel2() {

setLayout(null);
setVisible(true);
textField = new JTextField();
textField.setBounds(84, 84, 290, 77);
add(textField);
textField.setColumns(10);

}
}

最佳答案

你永远不会将panel2添加到任何东西中。 JPanelJFrame 不同,其中 setVisible 让它神奇地出现。您需要将其添加到容器中。只需将其添加到您的面板即可。

  • 同时避免使用 null 布局。学习使用Layout Managers

  • 另请参阅 Initial Threads 。您希望像这样从事件调度线程运行您的 swing 应用程序

    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable(){
    public void run() {
    new Frame();
    }
    });
    }
  • 这看起来像是您可能一直在尝试按照 CardLayout 实现的方式做一些事情。看这个example用于基本用途。另请参阅How to Use Card Layout

关于java - 为什么我的 JPanel 不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21586765/

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