如何创建新的JFrame?

时间:2016-11-04 10:44:36

标签: java swing jframe jbutton

我是Java的初学者,我找到了一些对我来说太技术性的答案(即使最基本的教程似乎在我运行代码时也会出现语法错误)。如何在真正的简单术语中向JButton添加JFrame?我已经达到了:

import javax.swing.JButton;
import javax.swing.JFrame;

public class JF {

    public static void main(String[] args) {
        JFrame myFrame = new JFrame();
        /*some pretty basic code to initialize the JFrame i.e.
        myFrame.setSize(300, 200);
        This is as far as I got
        */
    }

}

我会非常感谢一些帮助!

2 个答案:

答案 0 :(得分:2)

创建新的JFrame

创建JFrame的新实例的方法非常简单。 您所要做的就是:

JFrame myFrame = new JFrame("Frame Title");

但现在隐藏了Window,要查看Window您必须使用setVisible(boolean flag)方法。像这样:

myFrame.setVisible(true);

添加组件

有很多方法可以将Component添加到JFrame

最简单的方法是:

myFrame.getContentPane().add(new JButton());//in this case we are adding a Button

这只会添加一个新Component来填充JFrame()

如果您不希望Component填满屏幕,那么您应该ContentPane JFrame新的自定义Container

myFrame.getContentPane() = new JPanel();

将自定义Container添加到ContentPane并添加其他所有内容。

JPanel mainPanel = new JPanel();
myFrame.getContentPane().add(mainPanel);

如果您不想每次都写myFrame.getContentPane(),那么您可以保留ContentPane的实例。

JPanel pane = myFrame.getContentPane();

基本属性

JFrame的最基本属性是:

  • 尺寸
  • 位置
  • CloseOperation

您可以使用以下方式设置Size

myFrame.setSize(new Dimension(300, 200));//in pixels

添加所有组件后packing JFrame(更好的做法)。

myFrame.pack();

您可以使用以下方式设置Location

myFrame.setLocation(new Point(100, 100));// starting from top left corner

最后,您可以设置CloseOperation(按下X时会发生什么情况)

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

您可以选择以下4种不同的操作:

  • DO_NOTHING_ON_CLOSE //Nothing happens
  • HIDE_ON_CLOSE //setVisible(false)
  • DISPOSE_ON_CLOSE //Closes JFrame, Application still runs
  • EXIT_ON_CLOSE //Closes Application

使用事件调度线程

您应该初始化GUI中的所有Event Dispatch Thread,您只需执行以下操作即可:

class GUI implements Runnable {

    public static void main(String[] args) {
        EventQueue.invokeLater(new GUI());
    }

    @Override
    public void run() {
        JFrame myFrame = new JFrame("Frame Title");

        myFrame.setLocation(new Point(100, 100));
        myFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BorderLayout());
        myFrame.getContentPane().add(mainPanel);
        mainPanel.add(new JButton("Button Text"), BorderLayout.CENTER);

        myFrame.pack();
        myFrame.setLocationByPlatform(true);
        myFrame.setVisible(true);
    }

}

答案 1 :(得分:-1)

//I hope this will help

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
public class JF extends JFrame
{
    private JButton myButton;//Here you begin by declaring the button
    public JF()//Here you create you constructor. Constructors are used for initializing variable
    {
        myButton = new JButton();//We initialize our variable
        myButton.setText("My Button"); //And give it a name
        JPanel panel1 = new JPanel();//In java panels are useful for holding content
        panel1.add(myButton);//Here you put your button in the panel

        add(panel1);//This make the panel visible together with its contents

        setSize(300,400);//Set the size of your window
        setVisible(true);//Make your window visible
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args)
    {
        JFrame frame = new JF();
        frame.setTitle("My First Button");
        frame.setLocation(400,200);
    }
}