Читатель экрана не может читать текст из настольного приложения Javafx, интегрированная с Java SwingJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Читатель экрана не может читать текст из настольного приложения Javafx, интегрированная с Java Swing

Сообщение Anonymous »

У нас есть приложение Java Swing Desktop, и мы обновили несколько страниц, разработанных с использованием Javafx и для лучшего дизайна пользовательского интерфейса и интегрированного Javafx с использованием JFXPanel в качестве моста для Java Swing. Интеграция успешно сделана, но считыватель экрана не может читать текст и описание компонентов Javafx. Мы уже добавили весь текст доступности и описание, но все еще считывает экран, как NVDA, не может читать страницу Javafx. Не могли бы вы помочь и предложить какое -то решение, как мы можем продолжить.package org.example.javafx.hellojavafx;

import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.AccessibleRole;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.BorderPane;
import org.controlsfx.control.PopOver;

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

public class AccessiblePaneExample {

public static void main(String[] args) {
System.setProperty("javafx.accessible.force", "true");
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Accessible Pane Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLayout(new BorderLayout());

JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel, BorderLayout.CENTER);

Platform.runLater(() -> initFX(fxPanel));

frame.setVisible(true);
});
}

private static void initFX(JFXPanel fxPanel) {
// Button
Button button = new Button("Click Me");
button.setAccessibleRole(AccessibleRole.BUTTON);
button.setAccessibleRoleDescription("A button that can be clicked");
button.setAccessibleHelp("Clickable Button");

// ComboBox
ComboBox comboBox = new ComboBox();
comboBox.getItems().addAll("Item 1", "Item 2", "Item 3", "Item 4");
comboBox.setAccessibleRole(AccessibleRole.COMBO_BOX);
comboBox.setAccessibleRoleDescription("A combo box for selecting items");
comboBox.setAccessibleHelp("Item Selection ComboBox");

// BarChart
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
final BarChart barChart = new BarChart(xAxis, yAxis);
barChart.setTitle("Item Summary");
xAxis.setLabel("Item");
yAxis.setLabel("Value");

XYChart.Series series = new XYChart.Series();
series.setName("2023");
series.getData().add(new XYChart.Data("Item 1", 50));
series.getData().add(new XYChart.Data("Item 2", 80));
series.getData().add(new XYChart.Data("Item 3", 30));
series.getData().add(new XYChart.Data("Item 4", 60));

barChart.getData().add(series);
barChart.setAccessibleRoleDescription("Bar chart showing item summary");
barChart.setAccessibleHelp("Bar chart showing item summary");

for (XYChart.Data data : series.getData()) {
PopOver popOver = new PopOver();
popOver.setContentNode(new javafx.scene.control.Label(data.getXValue() + ": " + data.getYValue()));
data.getNode().setOnMouseEntered(event -> popOver.show(data.getNode()));
data.getNode().setOnMouseExited(event -> popOver.hide());
data.getNode().setAccessibleRole(AccessibleRole.TEXT);
data.getNode().setAccessibleRoleDescription(data.getXValue() + ": " + data.getYValue());
data.getNode().setAccessibleHelp(data.getXValue() + ": " + data.getYValue());
}

// Layout
BorderPane root = new BorderPane();
root.setTop(button);
root.setCenter(comboBox);
root.setBottom(barChart);
root.setFocusTraversable(true);

Scene scene = new Scene(root, 800, 600);
fxPanel.setScene(scene);
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... grated-wit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»