JPanel 不添加按钮和文本字段
JPanel doesn't add button and text field
我不明白为什么panel.add(txtnum1)
和panel.add(button2)
在我编译程序时没有出现。 panel.add(button)
工作正常,我的编译器没有抛出任何警告或错误,我错过了什么吗?
package gui;
import javax.swing.*;
import java.awt.*;
public class GUI {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(new Dimension(300, 500));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setBackground(Color.GRAY);
frame.getContentPane().add(panel);
JButton button = new JButton("Submit");
panel.add(button);
JTextField txtnum1 = new JTextField();
txtnum1.setPreferredSize(new Dimension(30, 50));
panel.add(txtnum1);
JButton button2 = new JButton("Clear");
panel.add(button2);
}
}
在使用 Swing 实现 GUI 应用程序时,我喜欢在构建 JFrame
的代码中使用这种方法(我们假设一个简单的 GUI 在 JPanel
容器和类似的东西):
- 创建
JFrame
并初始化
- 创建
JPanel
- 为该面板创建 GUI 组件并添加它们
- 将面板添加到
JFrame
(从 2 开始重复) JFrame
中的每个 JPanel
)
- 使
JFrame
在屏幕上可见
因此,您的代码将如下所示:
package gui;
import javax.swing.*;
import java.awt.*;
public class GUI {
public static void main(String[] args) {
/* step 1 */
JFrame frame = new JFrame();
frame.setSize(new Dimension(300, 500));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* step 2 */
JPanel panel = new JPanel();
panel.setBackground(Color.GRAY);
/* step 3 */
JButton button = new JButton("Submit");
panel.add(button);
JTextField txtnum1 = new JTextField();
txtnum1.setPreferredSize(new Dimension(30, 50));
panel.add(txtnum1);
JButton button2 = new JButton("Clear");
panel.add(button2);
/* step 4 */
frame.getContentPane().add(panel);
/* step 5 */
frame.setVisible(true);
}
}
经过测试,它可以在 Eclipse 中运行。
您应该在最后调用 setVisible(true),在所有组件都已添加之后。
将frame.setVisible(true);
放在末尾,它将按预期工作。
我不明白为什么panel.add(txtnum1)
和panel.add(button2)
在我编译程序时没有出现。 panel.add(button)
工作正常,我的编译器没有抛出任何警告或错误,我错过了什么吗?
package gui;
import javax.swing.*;
import java.awt.*;
public class GUI {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(new Dimension(300, 500));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setBackground(Color.GRAY);
frame.getContentPane().add(panel);
JButton button = new JButton("Submit");
panel.add(button);
JTextField txtnum1 = new JTextField();
txtnum1.setPreferredSize(new Dimension(30, 50));
panel.add(txtnum1);
JButton button2 = new JButton("Clear");
panel.add(button2);
}
}
在使用 Swing 实现 GUI 应用程序时,我喜欢在构建 JFrame
的代码中使用这种方法(我们假设一个简单的 GUI 在 JPanel
容器和类似的东西):
- 创建
JFrame
并初始化 - 创建
JPanel
- 为该面板创建 GUI 组件并添加它们
- 将面板添加到
JFrame
(从 2 开始重复)JFrame
中的每个JPanel
) - 使
JFrame
在屏幕上可见
因此,您的代码将如下所示:
package gui;
import javax.swing.*;
import java.awt.*;
public class GUI {
public static void main(String[] args) {
/* step 1 */
JFrame frame = new JFrame();
frame.setSize(new Dimension(300, 500));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* step 2 */
JPanel panel = new JPanel();
panel.setBackground(Color.GRAY);
/* step 3 */
JButton button = new JButton("Submit");
panel.add(button);
JTextField txtnum1 = new JTextField();
txtnum1.setPreferredSize(new Dimension(30, 50));
panel.add(txtnum1);
JButton button2 = new JButton("Clear");
panel.add(button2);
/* step 4 */
frame.getContentPane().add(panel);
/* step 5 */
frame.setVisible(true);
}
}
经过测试,它可以在 Eclipse 中运行。
您应该在最后调用 setVisible(true),在所有组件都已添加之后。
将frame.setVisible(true);
放在末尾,它将按预期工作。