Hallo zusammen,
ich bin gerade dabei zu versuchen, eine Applikation accessible zu machen.
Irgend wie scheint dies aber nicht so ganz zu klappen.
Ich habe mir mal eine Demoversion eines ScreenReaders (Virgo 4.71) und die Java Access Bridge installiert.
Mein Problem ist nun aber, dass mir der ScreenReader bei den JTextFields nicht sagt, in welchem Feld der Kursor steht.
Bei den Buttons hingegen wird mir schön brav gesagt, welcher Button gerade den Focus hat.
Liegt es daran, dass ich etwas elementares vergessen haben, einen völlig falschen Ansatz wähle oder am ScreenReader?
Ich habe mal einen Beispielcode geposted, welcher meiner Meinung nach funktionieren müsste, es aber eben wie gesagt nicht tut.
Kann mir hier jemand weiterhelfen?
Wäre dankbar für jeden Tipp und auch froh über einen Tipp für ein Tutorial oder Buch welches dieses Thema etwas intensiver behandelt und nicht nur kurz streift.
Gruss Xanadoo
ich bin gerade dabei zu versuchen, eine Applikation accessible zu machen.
Irgend wie scheint dies aber nicht so ganz zu klappen.
Ich habe mir mal eine Demoversion eines ScreenReaders (Virgo 4.71) und die Java Access Bridge installiert.
Mein Problem ist nun aber, dass mir der ScreenReader bei den JTextFields nicht sagt, in welchem Feld der Kursor steht.
Bei den Buttons hingegen wird mir schön brav gesagt, welcher Button gerade den Focus hat.
Liegt es daran, dass ich etwas elementares vergessen haben, einen völlig falschen Ansatz wähle oder am ScreenReader?
Ich habe mal einen Beispielcode geposted, welcher meiner Meinung nach funktionieren müsste, es aber eben wie gesagt nicht tut.
Code:
import java.awt.*;
import javax.swing.*;
public class AccessiblilityTest extends JFrame {
private javax.swing.JPanel jContentPane = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JTextField NameField = null;
private JTextField VornameField = null;
private JLabel jLabel = null;
private JLabel jLabel1 = null;
public AccessiblilityTest(Frame owner) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
initialize();
}
private void initialize() {
this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
this.setTitle("Accessibility Test");
this.setContentPane(getJContentPane());
}
private javax.swing.JPanel getJContentPane() {
if(jContentPane == null) {
GridBagConstraints gridBagConstraints21 = new GridBagConstraints();
gridBagConstraints21.gridx = 0;
gridBagConstraints21.insets = new Insets(8, 12, 12, 0);
gridBagConstraints21.anchor = GridBagConstraints.WEST;
gridBagConstraints21.gridy = 4;
jLabel1 = new JLabel();
jLabel1.setText("Vorname");
GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
gridBagConstraints11.gridx = 0;
gridBagConstraints11.insets = new Insets(12, 12, 0, 0);
gridBagConstraints11.anchor = GridBagConstraints.WEST;
gridBagConstraints11.gridy = 3;
jLabel = new JLabel();
jLabel.setText("Name");
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
gridBagConstraints3.fill = GridBagConstraints.NONE;
gridBagConstraints3.gridy = 4;
gridBagConstraints3.insets = new Insets(12, 8, 12, 0);
gridBagConstraints3.gridx = 1;
GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
gridBagConstraints2.fill = GridBagConstraints.NONE;
gridBagConstraints2.gridy = 3;
gridBagConstraints2.insets = new Insets(12, 8, 0, 0);
gridBagConstraints2.gridx = 1;
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.insets = new Insets(12, 8, 12, 12);
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints.gridy = 4;
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(new GridBagLayout());
gridBagConstraints1.gridx = 2;
gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints1.insets = new Insets(12, 8, 0, 12);
gridBagConstraints1.gridy = 3;
jContentPane.add(getJButton(), gridBagConstraints1);
jContentPane.add(getJButton1(), gridBagConstraints);
jContentPane.add(getNameField(), gridBagConstraints2);
jContentPane.add(getVornameField(), gridBagConstraints3);
jContentPane.add(jLabel, gridBagConstraints11);
jContentPane.add(jLabel1, gridBagConstraints21);
}
return jContentPane;
}
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("Name Knopf");
jButton.getAccessibleContext().setAccessibleName("Name Knopf");
jButton.getAccessibleContext().setAccessibleDescription("Ich bin der Name-Knopf");
}
return jButton;
}
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setText("VornameKnopf");
jButton1.getAccessibleContext().setAccessibleName("Vorname Knopf");
jButton1.getAccessibleContext().setAccessibleDescription("Ich bin der Vorname-Knopf");
}
return jButton1;
}
private JTextField getNameField() {
if (NameField == null) {
NameField = new JTextField();
NameField.setColumns(10);
NameField.getAccessibleContext().setAccessibleName("Name Field");
NameField.getAccessibleContext().setAccessibleDescription("Ich bin das Name-Feld");
}
return NameField;
}
private JTextField getVornameField() {
if (VornameField == null) {
VornameField = new JTextField();
VornameField.setColumns(10);
VornameField.getAccessibleContext().setAccessibleName("Vorname Feld");
VornameField.getAccessibleContext().setAccessibleDescription("Ich bin das Vorname-Feld");
}
return VornameField;
}
public static void main(String[] args) {
AccessiblilityTest lDialog = new AccessiblilityTest(null);
lDialog.pack();
lDialog.setVisible(true);
}
}
Kann mir hier jemand weiterhelfen?
Wäre dankbar für jeden Tipp und auch froh über einen Tipp für ein Tutorial oder Buch welches dieses Thema etwas intensiver behandelt und nicht nur kurz streift.
Gruss Xanadoo