【问题标题】:Why doesn't my second button show in Java为什么我的第二个按钮在 Java 中不显示
【发布时间】:2022-01-09 10:03:52
【问题描述】:

我的代码有问题。出于某种原因,它不会显示我的第二个按钮 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();
    }

}

【问题讨论】:

    标签: java swing button


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      尝试使用 JButton 代替 Button,如果这不起作用,请使用 jbg ga。如果您希望子类继承 jframe 类的所有内容,还可以尝试使用 JFrame -> extends JFrame 扩展类。你也必须使用frame.add(button)添加它

      【讨论】:

        【解决方案3】:

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

        frame.add(b2);
        

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

        【讨论】:

          【解决方案4】:

          代码:

          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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-12-20
              • 1970-01-01
              • 1970-01-01
              • 2012-02-27
              • 2017-06-06
              • 1970-01-01
              • 2017-08-06
              相关资源
              最近更新 更多