Java 中的 JFrame 未显示 JPanel 和其他小部件
JFrame not showing JPanel and other widgets in Java
所以这是我的代码,我仍然是 Java 的 GUI 新手(本周刚开始)。据我了解,您创建了一个 JFrame,您将 JPanel 添加到其中,然后在这些面板上您可以添加 JRadioButton 等小部件。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Binary extends JFrame{
private JLabel header;
private JTextField userInput1;
private JButton doIt;
private JButton clear;
private JRadioButton binary, decimal;
private JLabel number2;
private JFrame frame1;
private JPanel panel1;
private JPanel panel2;
public Binary(){
super("Number Converter");
frame1 = new JFrame("Binary to Decimal Converter");
frame1.setLayout(new FlowLayout());
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setSize(250,500);
frame1.setVisible(true);
panel1 = new JPanel();
panel1.setSize(250, 450);
frame1.add(panel1);
header = new JLabel("1- Select the mode: ");
panel1.add(header);
panel2 = new JPanel();
panel2.setSize(250, 25);
panel2.setOpaque(true);
panel2.setBackground(Color.GRAY);
frame1.add(panel2);
ButtonGroup choices= new ButtonGroup();
binary = new JRadioButton("Binary to Decimal"); // add the first radiobutton binary to decimal
choices.add(binary);
decimal = new JRadioButton("Decimal to Binary"); // add the second radiobutton decimal to binary
choices.add(decimal);
this.add(binary); // adds both to the program
this.add(decimal);
userInput1 = new JTextField(20); // Adds a blank text field for user input
frame1.add(userInput1);
number2 = new JLabel("2- Enter some words then click Do It:");
frame1.add(number2);
doIt = new JButton("Do It"); // left button do it
frame1.add(doIt);
clear = new JButton("Clear"); // right button clear
frame1.add(clear);
}
}
对于我这里的代码,当我 运行 它时,只有一个带有 Binary to Decimal Converter
的框架,没有别的,我在这里做错了什么?
您正在制作 JFrame
的两份副本,一份显示在屏幕上,一份添加组件。
public class Binary extends JFrame {
//...
private JFrame frame1;
//...
public Binary() {
super("Number Converter");
frame1 = new JFrame("Binary to Decimal Converter");
无需从 JFrame
扩展,只需创建一个实例并使用它...
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Binary {
private JLabel header;
private JTextField userInput1;
private JButton doIt;
private JButton clear;
private JRadioButton binary, decimal;
private JLabel number2;
private JFrame frame1;
private JPanel panel1;
private JPanel panel2;
public Binary() {
frame1 = new JFrame("Binary to Decimal Converter");
frame1.setLayout(new FlowLayout());
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1 = new JPanel();
panel1.setSize(250, 450);
frame1.add(panel1);
header = new JLabel("1- Select the mode: ");
panel1.add(header);
panel2 = new JPanel();
panel2.setSize(250, 25);
panel2.setOpaque(true);
panel2.setBackground(Color.GRAY);
frame1.add(panel2);
ButtonGroup choices = new ButtonGroup();
binary = new JRadioButton("Binary to Decimal"); // add the first radiobutton binary to decimal
choices.add(binary);
decimal = new JRadioButton("Decimal to Binary"); // add the second radiobutton decimal to binary
choices.add(decimal);
frame1.add(binary); // adds both to the program
frame1.add(decimal);
userInput1 = new JTextField(20); // Adds a blank text field for user input
frame1.add(userInput1);
number2 = new JLabel("2- Enter some words then click Do It:");
frame1.add(number2);
doIt = new JButton("Do It"); // left button do it
frame1.add(doIt);
clear = new JButton("Clear"); // right button clear
frame1.add(clear);
frame1.pack();
frame1.setVisible(true);
}
}
所以这是我的代码,我仍然是 Java 的 GUI 新手(本周刚开始)。据我了解,您创建了一个 JFrame,您将 JPanel 添加到其中,然后在这些面板上您可以添加 JRadioButton 等小部件。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Binary extends JFrame{
private JLabel header;
private JTextField userInput1;
private JButton doIt;
private JButton clear;
private JRadioButton binary, decimal;
private JLabel number2;
private JFrame frame1;
private JPanel panel1;
private JPanel panel2;
public Binary(){
super("Number Converter");
frame1 = new JFrame("Binary to Decimal Converter");
frame1.setLayout(new FlowLayout());
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setSize(250,500);
frame1.setVisible(true);
panel1 = new JPanel();
panel1.setSize(250, 450);
frame1.add(panel1);
header = new JLabel("1- Select the mode: ");
panel1.add(header);
panel2 = new JPanel();
panel2.setSize(250, 25);
panel2.setOpaque(true);
panel2.setBackground(Color.GRAY);
frame1.add(panel2);
ButtonGroup choices= new ButtonGroup();
binary = new JRadioButton("Binary to Decimal"); // add the first radiobutton binary to decimal
choices.add(binary);
decimal = new JRadioButton("Decimal to Binary"); // add the second radiobutton decimal to binary
choices.add(decimal);
this.add(binary); // adds both to the program
this.add(decimal);
userInput1 = new JTextField(20); // Adds a blank text field for user input
frame1.add(userInput1);
number2 = new JLabel("2- Enter some words then click Do It:");
frame1.add(number2);
doIt = new JButton("Do It"); // left button do it
frame1.add(doIt);
clear = new JButton("Clear"); // right button clear
frame1.add(clear);
}
}
对于我这里的代码,当我 运行 它时,只有一个带有 Binary to Decimal Converter
的框架,没有别的,我在这里做错了什么?
您正在制作 JFrame
的两份副本,一份显示在屏幕上,一份添加组件。
public class Binary extends JFrame {
//...
private JFrame frame1;
//...
public Binary() {
super("Number Converter");
frame1 = new JFrame("Binary to Decimal Converter");
无需从 JFrame
扩展,只需创建一个实例并使用它...
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Binary {
private JLabel header;
private JTextField userInput1;
private JButton doIt;
private JButton clear;
private JRadioButton binary, decimal;
private JLabel number2;
private JFrame frame1;
private JPanel panel1;
private JPanel panel2;
public Binary() {
frame1 = new JFrame("Binary to Decimal Converter");
frame1.setLayout(new FlowLayout());
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1 = new JPanel();
panel1.setSize(250, 450);
frame1.add(panel1);
header = new JLabel("1- Select the mode: ");
panel1.add(header);
panel2 = new JPanel();
panel2.setSize(250, 25);
panel2.setOpaque(true);
panel2.setBackground(Color.GRAY);
frame1.add(panel2);
ButtonGroup choices = new ButtonGroup();
binary = new JRadioButton("Binary to Decimal"); // add the first radiobutton binary to decimal
choices.add(binary);
decimal = new JRadioButton("Decimal to Binary"); // add the second radiobutton decimal to binary
choices.add(decimal);
frame1.add(binary); // adds both to the program
frame1.add(decimal);
userInput1 = new JTextField(20); // Adds a blank text field for user input
frame1.add(userInput1);
number2 = new JLabel("2- Enter some words then click Do It:");
frame1.add(number2);
doIt = new JButton("Do It"); // left button do it
frame1.add(doIt);
clear = new JButton("Clear"); // right button clear
frame1.add(clear);
frame1.pack();
frame1.setVisible(true);
}
}