当前位置: 首页 > 知识库问答 >
问题:

Java Swing-未将Jpanel添加到JFrame中

充运浩
2023-03-14

我一直在使用JFrame进行我的项目,但遇到了一个问题。这是我的代码:

public class WritePatient extends JFrame{
    JFrame frame = new JFrame();  
    
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JPanel panel3 = new JPanel();
    JPanel panel4 = new JPanel();
    
    private JTextField field1;
    private JTextField field2;
    private JTextField field3;
    private JTextArea field4;
    
    private final JLabel fNameLabel = new JLabel("First name: ");
    private final JLabel lNameLabel = new JLabel("Last name: ");
    private final JLabel ohipLabel = new JLabel("OHIP number: ");
    private final JLabel symptomLabel = new JLabel("Symptoms: ");
    
    private final JButton submitButton = new JButton("Register");
    private final JButton readButton = new JButton("Display List");
    
    String fName = "";
    String lName = "";
    String ohip = "";
    String symptom = "";
    ArrayList<Patient> sympList = new ArrayList<>();
    String date = "";
    
    public void patientFrame() throws NumberFormatException{

        setLayout(new GridLayout(6,1));
        
        try {
            panel1.setLayout(null);
            panel2.setLayout(null);
            panel3.setLayout(null);
            panel4.setLayout(null);
            
            field1 = new JTextField(10);
            panel1.add(fNameLabel);
            panel1.add(field1);
//          add(fNameLabel);
//          add(field1);
            
            field2 = new JTextField(10);
            panel2.add(lNameLabel);
            panel2.add(field2);
//          add(lNameLabel);
//          add(field2);
            
            field3 = new JTextField(10);
            panel3.add(ohipLabel);
            panel3.add(field3);
//          add(ohipLabel);
//          add(field3);
            
            field4 = new JTextArea(5, 10);
            panel4.add(symptomLabel);
            panel4.add(field4);
//          add(symptomLabel);
//          add(field4);
            
            frame.add(panel1);
            frame.add(panel2);
            frame.add(panel3);
            frame.add(panel4);  
            
            add(submitButton);
            add(readButton);
            
            ButtonHandler btHandler = new ButtonHandler();
            submitButton.addActionListener(btHandler);
            readButton.addActionListener(btHandler);

还有,这是我的主要。java:

    public class Main {
    public static void main(String[] args) {
        WritePatient writePatient = new WritePatient();
        writePatient.setSize(300,300);
        writePatient.setTitle("Information");
        writePatient.patientFrame();
        writePatient.setVisible(true);
        writePatient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

我想做的是向面板添加文本字段和标签。但是,当我运行此代码时,它会显示:结果

如果我在框架中添加标签和文本字段,效果很好。你能帮我解决这个问题吗?非常感谢你。

共有1个答案

平光明
2023-03-14

您需要将按钮添加到您选择的面板中,我假设您想要将它们添加到面板4

panel4.add(submitButton);
panel4.add(readButton);

如果你想把它们添加到框架中,你可以只添加那些

frame.add(submitButton);
frame.add(readButton);
 类似资料:
  • 我正在尝试将此 JPanel 添加到 JFrame 中,但我看不到他。当我创建新的 java 类并自己制作这个框架时,一切都很好。 来自JFrame表单的代码。 来自 JPanel 的代码: 来自Java类的代码。 我想不出区别在哪里。有人能帮我吗?

  • 我正在创建一个TicTacToe游戏。我把所有带有ActionListeners的后端放在按钮上,将按钮添加到面板,设置框架等等。 然而,当我运行程序时,我的JPanel似乎没有添加到JFrame中。我试过使用不同的布局,仔细检查是否确实放置了。为所有内容添加行,之前的所有帖子似乎都指向了我认为已经涵盖的内容。 如果这真的很直接,我提前道歉。 谢谢你的帮助。

  • 我已经创建了JPanel的一个子类来显示图像。我在JFrame的构造函数中实例化这一点,并将其添加到该JFrame中。这很好用。然后我添加了一个带有ActionListener的按钮来更改该图像。我的问题是JFrame不会更新,尽管我已经尝试过重新绘制等。 JPanel的子类: JFrame基本上是这样的 为什么ActionListener中的方法不更新JFrame Hauptfenster中的i

  • 问题内容: 我有一个gui,它的Panel包含一系列标签和TextField,并使用spring布局(这是mainPanel),而另一个Panel仅包含button(buttonPanel)。我正在尝试使我的mainPanel也具有垂直滚动条。我想实现我的GUI,以便在JFrame中有2个面板。mainPanel出现在框架的顶部,而buttonPanel出现在mainPanel的下方。 我的问题是

  • 我正在创建一个swing应用程序,并希望将JfreeChart添加到JPanel中。我创建了一个方法,在该方法中我创建了如下所示的图表: 创建了一个全局变量: 由于某种原因,当我点击按钮时,图表没有显示出来。

  • 我目前有一个主JFrame包含几个JPanels,每个面板中都有一些文本。创建JPanels的代码在一个单独的类中(它“实现”JPanels)。如何仅向单个面板添加JScrollPane? 我已经花了一些时间尝试这样做,但什么也没有发生。顺便说一下,我的JPanel使用GridLayout 上面的类是另一个面板类的实例变量,它是主面板“MenuHold”的实例变量。但使用“MenuHolder”的