为什么我的第二个按钮不显示在 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();
}
}
输出:
资源:
正如其他人所指出的,您错过了将第二个按钮添加到您的框架中。快速解决方法是添加两个按钮,如下所示:
frame.getContentPane().add(b1, BorderLayout.NORTH);
frame.getContentPane().add(b2, BorderLayout.SOUTH);
我的代码有问题。出于某种原因,它不会显示我的第二个按钮 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();
}
}
输出:
资源:
正如其他人所指出的,您错过了将第二个按钮添加到您的框架中。快速解决方法是添加两个按钮,如下所示:
frame.getContentPane().add(b1, BorderLayout.NORTH);
frame.getContentPane().add(b2, BorderLayout.SOUTH);