在javaFX中调整画布大小没有这样的方法,唯一的解决方案是从Canvas扩展.
class ResizableCanvas extends Canvas {
public ResizableCanvas() {
// Redraw canvas when size changes.
widthProperty().addListener(evt -> draw());
heightProperty().addListener(evt -> draw());
}
private void draw() {
double width = getWidth();
double height = getHeight();
GraphicsContext gc = getGraphicsContext2D();
gc.clearRect(0, 0, width, height);
}
@Override
public boolean isResizable() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
从Canvas扩展是唯一使画布Resizable的解决方案?因为这个解决方案只有在我们不想使用FXML时才有效,如果我们在fxml中声明一个画布,我们怎样才能使它可以调整大小?
这是我的代码:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class Main extends Application {
Controller controller;
@Override
public …Run Code Online (Sandbox Code Playgroud) 我想知道有一些算法可以将图形转换成平面图吗?我在谷歌搜索过我找不到可以帮助我的东西

我有一个在Swing上完美运行的代码,但我想将它集成到javaFX上.我知道我必须使用SwingNode,但代码在javaFX中不起作用.这是我用的librarie的.jar:http://forge.scilab.org/index.php/p/jlatexmath/downloads/694/
这是摆动的结果:

这是Swing中的代码:
import org.scilab.forge.jlatexmath.TeXConstants;
import org.scilab.forge.jlatexmath.TeXFormula;
import org.scilab.forge.jlatexmath.TeXIcon;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
public class LatexExample extends JFrame implements ActionListener {
private JTextArea latexSource;
private JButton btnRender;
private JPanel drawingArea;
public LatexExample() {
this.setTitle("JLatexMath Example");
this.setSize(500, 500);
Container content = this.getContentPane();
content.setLayout(new GridLayout(2, 1));
this.latexSource = new JTextArea();
JPanel editorArea = new JPanel();
editorArea.setLayout(new BorderLayout());
editorArea.add(new JScrollPane(this.latexSource),BorderLayout.CENTER);
editorArea.add(btnRender = new JButton("Render"),BorderLayout.SOUTH);
content.add(editorArea);
content.add(this.drawingArea = new JPanel());
this.btnRender.addActionListener(this);
this.latexSource.setText("x=\\frac{-b \\pm \\sqrt {b^2-4ac}}{2a}"); …Run Code Online (Sandbox Code Playgroud) 我在javafx中有一个项目,我有3个依赖项我尝试使用maven将它们与我的primaryale jar结合起来:结果我得到了一个罐子(1.82mb)但是当我点击它时他没有启动注意出现.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>org.scilab.forge</groupId>
<artifactId>jlatexmath</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>fxgraphics2d</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>8.0.6_20</version>
</dependency>
</dependencies>
<groupId>groupId</groupId>
<artifactId>FXCalc</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
Run Code Online (Sandbox Code Playgroud)
这是一些截图:

问题:我得到的jar文件不起作用,它不想启动,我尝试使用蚂蚁和gradle但我不知道如何使用它们.
编辑:尝试解决方案后,我得到一个罐子,但它仍然没有启动,我没有错误.
编辑2:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<dependencies>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>fxgraphics2d</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.scilab.forge</groupId>
<artifactId>jlatexmath</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>8.0.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>sample.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions> …Run Code Online (Sandbox Code Playgroud) 我正在使用drawline链接到圆圈,但我有一个问题是我的代码:
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Panneau extends JPanel {
public void paintComponent(Graphics g){
// declaration
String text = "test";
int x = 250, y = 200;
int height = 50, width = 50;
g.setColor(Color.yellow);
g.fillOval(x-height/2, y-width/2,width, height);
g.fillOval((x-height/2)+100, (y-width/2)+50,width, height);
FontMetrics fm = g.getFontMetrics();
double textWidth = fm.getStringBounds(text, g).getWidth();
g.setColor(Color.black);
g.drawString(text, (int) (x - textWidth/2),(int) (y + fm.getMaxAscent() / 2));
g.drawString(text, (int) (x - textWidth/2)+100,(int) (y + fm.getMaxAscent() / 2)+50);
g.setColor(Color.black);
g.drawLine(x,y,x+100,y+50);
}
} …Run Code Online (Sandbox Code Playgroud) 我做了一个迷你代码绘制椭圆并相互链接,现在我尝试移动椭圆(圆圈),但我有一个问题(在编码)
// Panneau.java
public class Panneau extends JPanel {
private int R = 20;
private boolean isDrag = false;
String text = "stack";
int x = 250, y = 200;
int height = 50, width = 50;
Random Rnd = new Random();
int rand=Rnd.nextInt();
int r=Math.abs(rand%250);
int r2=Math.abs(rand%250);
public Panneau() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if ((x<=e.getX() && x+R>=e.getX()) && ( y<=e.getY() && y+R>=e.getY())) {
moveVertex(e.getX(),e.getY());
isDrag = true;
}
}
@Override
public void mouseReleased(MouseEvent …Run Code Online (Sandbox Code Playgroud)