尝试使用GUI,无法添加按钮和标签

Dyl*_*der 1 java user-interface swing awt

赋值很简单,我们需要做的就是让代码创建一个带有红色面板的窗口,其中包含一个按钮和标签.这是迄今为止的代码以及测试器类.我把标签显示在窗口上,但它在一个奇怪的地方.我无法显示按钮以显示为红色的背景.

这是我最困难的地方:

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MyCustomFrame extends JFrame
{
    public MyCustomFrame()
    {
        createComponents();
        setSize(FRAME_WIDTH, FRAME_HEIGHT);

    }

private void createComponents()
    {
        JPanel panel=new createPanel();
        button=new JButton("Push Me");
        label=new JLabel("This is a label");
        add(button);
        add(label);
    }

private JButton button;
private JLabel label;
final int FRAME_WIDTH = 800;
final int FRAME_HEIGHT = 800;

public void createPanel()
    {
        JPanel panel=new JPanel();
        panel.setBackground(Color.RED);
        //button=new JButton("Push Me");
        //label=new JLabel("This is a label");

    }
public void createFrame()
    {
        JFrame frame=new JFrame();
        add(frame);
        frame.setVisible(true);
    }

}
Run Code Online (Sandbox Code Playgroud)

这是测试人员类:

import javax.swing.JFrame;

public class MyCustomFrameViewer
{
   public static void main(String[] args)
   {
      MyCustomFrame frame = new MyCustomFrame();
      frame.setTitle("My first frame");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}  
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

您创建JPanel,面板,但不添加任何内容,然后永远不会将面板添加到您的JFrame.您应该将组件添加到JPanel面板,然后将面板对象添加到JFrame.

请注意,JPanel默认使用FlowLayout,因此它更容易接受多个其他组件而无需特殊的添加方法.JFrame的contentPane使用BorderLayout,使用起来稍微复杂一些.