学一学JavaFX

JavaFX

1.初识stage窗口

import javafx.application.Application;
import javafx.scene.image.Image;
import javafx.stage.Stage;

//(Stage primaryStage)会默认给你创建一个叫“primaryStage”的窗口,你也可以自己创建,不使用默认的窗口
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("JavaFX");//窗口标题
        primaryStage.getIcons().add(new Image("tupian/Attack.png"));//修改窗口的小标图
//      primaryStage.setIconified(true);设置初始窗口为最小化
//      primaryStage.setMaximized(true);设置初始窗口为最大化
        primaryStage.setResizable(true);//设置窗口是否可拉伸
        primaryStage.setFullScreen(true);//这一行
        primaryStage.setOpacity(0.1);//窗口透明度,0全透明,1不透明
        primaryStage.setAlwaysOnTop(true);//窗口是否永远在顶层
        primaryStage.setWidth(500);//窗口宽度
        primaryStage.setHeight(500);//窗口高度
        primaryStage.setX(500);//窗口初始x坐标
        primaryStage.setY(500);//窗口初始y坐标
        primaryStage.setScene(new Scene(new Group()));//和这一行可以设置全屏,是那种打游戏的全屏,和最大化不一样
        primaryStage.show();
//      primaryStage.close();关闭窗口
    }
}
package JavaFXbzhan;
import javafx.application.Application;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        Stage s1 = new Stage();
        s1.setTitle("1111");
        s1.show();

        Stage s2 = new Stage();
        s2.initModality(Modality.APPLICATION_MODAL);//模态窗口,必须关闭当前窗口,才能点击其他窗口
        s2.setTitle("2222");
        s2.show();

        Stage s3 = new Stage();
        s3.initOwner(s1);//必须先关闭当前窗口
        s3.initModality(Modality.WINDOW_MODAL);//才能打开s1窗口
        s3.setTitle("3333");
        s3.show();
    }
}

1.JOptionPane类

四种消息提示框方法

  • showConfirmDialog():确认对话框(有三个选项:是,否,取消)
  • showInputDialog():输入对话框
  • showMessageDialog():消息对话框(只有一个选项:确定)
  • showOptionDialog():选择对话框

例如:

JOptionPane.showMessageDialog(null,"Welcome to Java");//显示一个需要你点击确认的对话框

String name = JOptionPane.showInputDialog("What is your  name?");//使用对话框输入你的名字

String message = String.format("Welcome, %s, to Java Programming!",name);//编辑将要在确认对话框中使用的字符串

JOptionPane.showMessageDialog(null,message);//弹出确认对话框

2.Graphics类

Graphics类:可以理解为画笔,为我们提供了各种绘制图形的方法:

1.画直线 drawLine(int x1,int y1,int x2, int y2)

2.画矩形边框 drawRect(int x,int y,int width,int height)

3.画椭圆边框 drawOval(int x,int y,int width,int height)

4.填充矩形 fillRect(int x,int y,int width,int height)

5.填充椭圆 fillOval(int x,int y,int width,int height)

6.画图片 drawImage(Image img,int x,int y,……)

7.画字符串 drawString(String str,int x,int y)

8.设置画笔的字体 setFont(Font font)

9.设置画笔的颜色 setColor(Color c)

在使用paint画图时应加上super.paint(g),表示在原来图像的基础上,再画图。如果不加super.paint(g),重绘时,会将原有的绘制清空,再根据paint(g)函数绘制。

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

public class DrawPanel extends JPanel {
    public void paintComponent(Graphics g){
        super.paintComponent(g);

        int width = getWidth();
        int height = getHeight();

        g.drawLine(0,0,width,height);
        g.drawLine(0,height,width,0);
    }
}


package JavaFXclass;
import javax.swing.*;

public class DrawPanelTest {
    public static void main(String[] args) {
        DrawPanel panel = new DrawPanel();
        JFrame application = new JFrame();
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口右上角的×号可以关闭窗口

        application.add(panel);
        application.setSize(250,250);
        application.setVisible(true);
    }
}

drawRect and drawOval,画矩形和画椭圆

package JavaFXclass;
import javax.swing.*;
import java.awt.*;
public class Shapes extends JPanel {
    private int choice;

    public Shapes(int userChoice){
        choice = userChoice;
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        for (int i = 0; i < 10;i++){
            switch(choice){
                case 1:
                    g.drawRect(10+i*10,10+i*10,50+i*10,50+i*10);
                    break;
                case 2:
                    g.drawOval(10+i*10,10+i*10,50+i*10,50+i*10);
                    break;
            }
        }
    }
}



package JavaFXclass;
import javax.swing.*;
public class ShapesTest {
    public static void main(String[] args) {
        String input = JOptionPane.showInputDialog("Enter 1 to draw rectangles\n"+"Enter 2 to draw ovals");
        int choice = Integer.parseInt(input);
        Shapes panel = new Shapes(choice);
        JFrame application = new JFrame();
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.add(panel);
        application.setSize(300,300);
        application.setVisible(true);
    }
}

fillRect and fillOval填充一个矩形和填充一个椭圆

//画一个笑脸
package JavaFXclass;
import javax.swing.*;
import java.awt.*;
public class DrawSmiley extends JPanel {
    public void paintComponent(Graphics g){
        super.paintComponent(g);

        g.setColor(Color.yellow);
        g.fillOval(10,10,200,200);

        g.setColor(Color.black);
        g.fillOval(55,65,30,30);
        g.fillOval(135,65,30,30);

        g.fillOval(50,110,120,60);

        g.setColor(Color.yellow);
        g.fillRect(50,110,120,30);
        g.fillOval(50,120,120,40);
    }
}



package JavaFXclass;
import javax.swing.*;
public class DrawSmileyTest {
    public static void main(String[] args) {
        DrawSmiley panel = new DrawSmiley();
        JFrame application = new JFrame();

        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.add(panel);
        application.setSize(300,350);
        application.setVisible(true);
    }
}

3.Text

Text即文本

创建一个Text文本

Text t = new Text (10, 20, "This is a text sample");

设置属性:

设置文本内容

t.setText("This is a text sample");

设置文本字体

t.setFont(Font.font ("Verdana", 20));

设置字体颜色

t.setFill(Color.RED);

4.Button

创建一个按钮:

Button push = new Button("Push Me!");
push.setText("push");//设置按钮上显示的内容

push.setOnAction(this::processButtonPress);//给点击按钮添加一个事件
private void processButtonPress(ActionEvent actionEvent) {//processButtonPress为点击按钮时的事件
        count++;
        countText.setText("Pushes: "+count);
    }

5.面板

Accordion

**手风琴面板:**就是一个折叠展开功能,一般与TitledPane一起用)

AnchorPane

相对位置控制面板:锚布局:可以设置容器里面的控件的各种相对位置,主要用于界面大小改变而控件相对位置不变的情况

BorderPane

**区域面板:**划分为了5个区域:上、下、左、右、中

FlowPane

**流面板:**会随着界面大小而改变控件布局

GridPane

网格面板 :面板中的控件可以设置按网格坐标分布,就当作一个棋盘吧,控件就是棋子,指哪放哪

HBox

**水平排列面板:**顾名思义,水平排列,与垂直排列VBox对应

Pane

**所有面板的爸爸:**当作java的Object来理解就好了

ScrollPane

滚动面板:瞄一眼你的网页右边有没有一个滚动条→_→,注意滚动面板里面只能放一个元素,所以一般是把需要的控件都装到一个其他面板里面,再把那个叫其他的面板扔到这个滚动面板里面-_-

SplitPane

**分割面板:**里面存放的其他面板可以自由拖动大小)

StackPane

**层级面板:**放入进StackPane的子模块会根据放入顺序的不同形成不同的层级关系.

TabPane

标签面板: 用来放标签

TilePane

片面板: 就是特殊的流面板,里面每个元素的网格大小都是相同的,测试发现取最大的,详见示例

TitledPane

标题面板:用法见Accordion

VBox

**竖直面板:**用法见HBox示例

//创建一个流面板
        FlowPane flowPane = new FlowPane();

        //创建一堆按钮或其他什么东西
        Button button1 = new Button("button1");
        Button button2 = new Button("button2");
        Button button3 = new Button("button3");
        Button button4 = new Button("button4");
        Button button5 = new Button("button5");
        Button button6 = new Button("button6");

        //把按钮都扔进去
     flowPane.getChildren().addAll(button1,button2,button3,button4,button5,button6);
		flowPane.setAlignment(Pos.CENTER);//设置其中的控件居中
		
        primaryStage.setScene(new Scene(flowPane, 400, 275));
        primaryStage.show();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值