繁体   English   中英

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

[英]Why doesn't my second button show in Java

我的代码有问题。 出于某种原因,它不会显示我的第二个按钮 b2,并且我无法设置第一个按钮的大小。 我想让两个按钮在中间并排放置,并在它们周围留出一些空间。

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();
    }

}

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

frame.add(b2);

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

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

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

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

尝试使用 JButton 而不是 Button,如果这不起作用,请使用 jbg ga。 Also try extending class with JFrame -> extends JFrame , if you want the subclass to inherit everything from jframe class. 你也必须使用frame.add(button)添加它

代码:

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();
    }

}

Output:

输出

资源:

极客

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM