为什么我的第二个按钮不显示在 Java

Why doesn't my second button show in Java

我的代码有问题。出于某种原因,它不会显示我的第二个按钮 b2,而且我无法设置第一个按钮的大小。我想让两个按钮在中间彼此相邻,周围有一些 space。

import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;

public class HW10{
    Button b1, b2;
    L1 l1;
    class L1 implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            int tmp = Integer.parseInt(b1.getLabel());
            tmp++;
            b1.setLabel(""+tmp);
        }
        
    }
    public HW10(){
        JFrame frame = new JFrame("Homework 15");
        l1 = new L1();
        b1 = new Button("0");
        b2 = new Button("KURAC");
        b1.addActionListener(l1);
        b1.setBounds(100, 100, 100, 80);
        frame.add(b1);
        frame.setBounds(200,200,400,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        HW10 kk = new HW10();
    }

}

尝试使用 JButton 而不是 Button,如果这不起作用,jbg ga。如果您希望 subclass 继承 jframe class 的所有内容,也可以尝试使用 JFrame -> extends JFrame 扩展 class。您还必须使用 frame.add(button)

添加它

第二个按钮没有添加到框架中。您需要致电:

frame.add(b2);

关于按钮大小,请使用方法 .setSize 为每个按钮声明您希望它们具有的大小。

其他答案是正确的,您根本不添加第二个按钮,但是,您不应该直接向框架添加组件。你要做的是

frame.getContentPane().add(button1);
frame.getContentPane().add(button2);

您可能还应该为窗格设置布局管理器。

代码:

package hw10;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class HW10 {
    JButton b1;
    JButton b2;
//    L1 l1;
/*
    class L1 implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
//            int tmp = Integer.parseInt(b1.getLabel());
            int tmp = Integer.parseInt(b1.getText());
            tmp++;
//            b1.setLabel(""+tmp);
            b1.setText(Integer.toString(tmp));
        }

    }
*/

    public HW10() {
        JFrame frame = new JFrame("Homework 15");
//        l1 = new L1();
        b1 = new JButton("0");
//        b1.setSize(100, 40);
        b2 = new JButton("KURAC");
//        b2.setSize(100, 40);
        /*
            We can use lambda expressions
         */
        b1.addActionListener((ActionEvent e) -> {
            int tmp = Integer.parseInt(b1.getText());
            tmp++;
            b1.setText(Integer.toString(tmp));
        });
        //Use GridBagLayout as your layout manager
        GridBagLayout layout = new GridBagLayout();
        JPanel panel = new JPanel();
        panel.setLayout(layout);
        GridBagConstraints c = new GridBagConstraints();
        c.insets = new Insets(2, 2, 2, 2);
        //0th row
        c.gridx = 0;
        //0th column
        c.gridy = 0;
        //width
        c.ipadx = 100;
        //height
        c.ipady = 30;
        //Adding first button
        panel.add(b1, c);
        //1st column we
        c.gridx = 1;
        //Adding second button
        panel.add(b2, c);
        frame.add(panel);
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void launch() {
        SwingUtilities.invokeLater(() -> {
            new HW10();
        });
    }

    public static void main(String... $) {
        launch();
    }

}

输出:

资源:

geeksforgeeks

正如其他人所指出的,您错过了将第二个按钮添加到您的框架中。快速解决方法是添加两个按钮,如下所示:

frame.getContentPane().add(b1, BorderLayout.NORTH);
frame.getContentPane().add(b2, BorderLayout.SOUTH);