如何在Java中创建GUI界面

15

我使用Java已经有一段时间了,但我从来没有创建过GUI - 总是CLI。如何在Java中创建GUI?您能否推荐一个好的教程/参考资料?

我想创建一个简单的GUI,其中包含两个长文本区域和一些按钮。


http://download.oracle.com/javase/tutorial/uiswing/ - Bart Kiers
7
@Flynn1179,谷歌认为的受欢迎的GUI网站并不能给我在SO上寻找的专业意见。请翻译此内容。 - Amir Rachum
三个答案和一条评论都同意谷歌,我也是这样认为的。 - Flynn1179
请参见http://stackoverflow.com/questions/4579867/java-gui-libraries/4579902#4579902。 - Andy Thomas
7个回答

11

这里有一个简单的例子

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Foo{

  public static void main(String[] args) {

    JFrame f = new JFrame("A JFrame");
    f.setSize(250, 250);
    f.setLocation(300,200);
    final JTextArea textArea = new JTextArea(10, 40);
    f.getContentPane().add(BorderLayout.CENTER, textArea);
    final JButton button = new JButton("Click Me");
    f.getContentPane().add(BorderLayout.SOUTH, button);
    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            textArea.append("Button was clicked\n");

        }
    });

    f.setVisible(true);

  }

}

事件可以用lambda表达式替换:button.addActionListener((ActionEvent e) -> { textArea.append("按钮被点击了\n"); }); - 这个例子胜过千言万语... - pollaris
我刚开始学习Java和Swing,为什么你在这里没有使用invokeLater()方法来在事件分发线程中操作GUI呢?人们说这是必须的,因为Swing不是线程安全的。 - Accountant م

8

在Oracle教程页面上阅读有关Swing的内容。


5
不要用 Swing,现在已经是2017年了,没有理由不使用JavaFX或其他工具。 - 0x6C38

2

2

您需要做的是创建您的文本/代码文件(使用Note Pad++或Notepad),并记住文件名。

然后打开该文件,并开始编写您的代码。

import java.awt.*;
import javax.swing.*;

这基本上告诉Java从与Java一起下载的各种代码库中获取java.awtjavax.swing(这是为帮助开发人员设计的语言,因此易于理解)。

接下来,您需要创建一个包含全部内容的函数,包括大小、文本和颜色等。请记住,我们在这里不编写GUI,因为引入了java.awt.*;javax.swing.*;。

当我输入public class work时,Work是我的文件名(如果它被称为code,它将是public class code

public class work {

private static void createWindow() {

 //Create and set up the window
 JFrame frame = new JFrame ("simple GUI");
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 JLabel textLabel = new JLabel("Im cool" ,SwingConstants.CENTER); 
 textLabel.setPreferredSize(new Dimension(300, 100));
 frame.getContentPane().add(textLabel, BorderLayout.CENTER);
 //Display the window
 frame.setLocationRelativeTo(null);
 frame.pack();
 frame.setVisible(true); 

请记住,您尚未在任何地方调用该函数,它只是等待被调用。

public static void main(String[] args) {

这告诉计算机,无论接下来发生什么,都会在运行程序时执行。
因此,在其中,您需要放置:
createWindow();

由于这是你在上面称呼你的函数,并且它正在调用该函数,因此在运行程序时不需要调用此函数。

1
创建一个JFrame并不像人们想象的那么难,你只需要一个定义类和一个GUI类。这是Java中最简单的事情之一。
定义类:
public class GetMyJavaWindow {
public static void main (String args[]) {
new JavaWindow();
}
}

JFrame类:

import javax.swing.JFrame;

public class JavaWindow { // Class name must match what it says in the def. class
public static final long serialVersionUID = 1L; // Needed for the JFrame to work.

public JavaWindow() { // Must match class name

this.setVisible(true); // Required
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // Required
this.setSize(800,600); // this.setSize (x,y);

}
}

如果你需要任何关于GUI的帮助,来找我吧。


1
你有不同的可能性,在编程方面,但我建议使用Swing和像Netbeans这样的IDE,它提供了一个非常好的所见即所得编辑器(称为Matisse)。
Netbeans还有项目模板,可以让您快速开始。
最后,正如其他人指出的那样,请确保做好功课,并阅读一些初学者Swing教程。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接