![](/img/trans.png)
[英]Why my app doesn't show location button when I accept the permission request dialog the second time is runned?
[英]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();
}
}
正如其他人指出的那样,您错过了将第二个按钮添加到框架中。 一个快速的解决方法是添加两个按钮,如下所示:
frame.getContentPane().add(b1, BorderLayout.NORTH);
frame.getContentPane().add(b2, BorderLayout.SOUTH);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.