21xrx.com
2024-12-22 22:06:49 Sunday
登录
文章检索 我的文章 写文章
Java中没有Swing包,如何使用
2023-06-17 04:54:25 深夜i     --     --
JavaGUI AWT JavaFX

Swing是Java中用于创建图形用户界面的工具包之一,但是在某些情况下,代码需要在没有Swing包的环境中运行。那么在Java中没有Swing包的情况下,我们应该怎么做呢?

首先,我们需要了解一些替代Swing的解决方案。目前主要有AWT和JavaFX两种解决方案。AWT是Java早期的GUI工具包,它提供了几乎所有Swing的功能,但是它的界面风格比较丑陋,容易出现不兼容性问题。JavaFX是Java SE 8之后提供的GUI工具包,它是基于Scene Graph的模型来构建应用程序的,灵活性更高,能够提供更好的体验。但是,JavaFX需要Java 8及以上版本的运行环境支持,如果你需要在较低版本的Java中运行代码就需要用到AWT或其他方案。

接着,我们来看一下使用AWT和JavaFX如何实现一个简单的图形界面。

使用AWT实现一个简单的GUI界面,代码如下:


import java.awt.*;

public class AWTExample {

  private Frame mainFrame;

  private Label headerLabel;

  private Label statusLabel;

  private Panel controlPanel;

  public AWTExample(){

   prepareGUI();

  }

  public static void main(String[] args){

   AWTExample awtExample = new AWTExample();

   awtExample.showEvent();

  }

  private void prepareGUI(){

   mainFrame = new Frame("AWT Example");

   mainFrame.setSize(400,400);

   mainFrame.setLayout(new GridLayout(3, 1));

   mainFrame.addWindowListener(new WindowAdapter() {

     public void windowClosing(WindowEvent windowEvent){

      System.exit(0);

     }

   });

   headerLabel = new Label();

   headerLabel.setAlignment(Label.CENTER);

   statusLabel = new Label();    

   statusLabel.setAlignment(Label.CENTER);

   statusLabel.setSize(350,100);

   controlPanel = new Panel();

   controlPanel.setLayout(new FlowLayout());

   mainFrame.add(headerLabel);

   mainFrame.add(controlPanel);

   mainFrame.add(statusLabel);

   mainFrame.setVisible(true); 

  }

  private void showEvent(){

   headerLabel.setText("Welcome to the AWT Example");

   Button okButton = new Button("OK");

   Button cancelButton = new Button("Cancel");

   okButton.setActionCommand("OK");

   cancelButton.setActionCommand("Cancel");

   okButton.addActionListener(new ButtonClickListener());

   cancelButton.addActionListener(new ButtonClickListener());

   controlPanel.add(okButton);

   controlPanel.add(cancelButton);   

   mainFrame.setVisible(true); 

  }

  private class ButtonClickListener implements ActionListener{

   public void actionPerformed(ActionEvent e) {

     String command = e.getActionCommand(); 

     if( command.equals( "OK" )) {

      statusLabel.setText("Ok Button clicked.");

     } else if( command.equals( "Cancel" ) ) {

      statusLabel.setText("Cancel Button clicked.");

     }

   }    

  }

}

使用JavaFX实现一个简单的GUI界面,代码如下:


import javafx.application.Application;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.layout.StackPane;

import javafx.stage.Stage;

public class JavaFXExample extends Application {

  public static void main(String[] args) {

    launch(args);

  }

  @Override

  public void start(Stage primaryStage) {

    primaryStage.setTitle("JavaFX Example");

    Button btn = new Button();

    btn.setText("Say 'Hello World'");

    btn.setOnAction(new EventHandler () {

      @Override

      public void handle(ActionEvent event) {

        System.out.println("Hello World!");

      }

    });

    StackPane root = new StackPane();

    root.getChildren().add(btn);

    primaryStage.setScene(new Scene(root, 300, 250));

    primaryStage.show();

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复