import java.awt.BorderLayout;
import java.awt.Container;
import java.lang.reflect.InvocationTargetException;
import javax.accessibility.AccessibleContext;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class AccessibilityJButtonBug {

    private static JFrame frame;

    private static void createTestUI() {
        frame = new JFrame("Accessibility JComponents bug");

        JButton button = new JButton("I am button..");
        AccessibleContext bAccessibleContext = button.getAccessibleContext();
        bAccessibleContext.setAccessibleName("button accessibility name");
        bAccessibleContext.setAccessibleDescription("button accessibility " +
                "description");

        JCheckBox jCheckBox = new JCheckBox("I am checkbox:");
        AccessibleContext cAccessibleContext = jCheckBox.getAccessibleContext();
        cAccessibleContext.setAccessibleName("Checkbox accessibility name");
        cAccessibleContext.setAccessibleDescription("checkbox accessibility " +
                "description");

        Container container = frame.getContentPane();
        container.add(button, BorderLayout.NORTH);
        container.add(jCheckBox,BorderLayout.SOUTH);

        frame.setLocationRelativeTo(null);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) throws InterruptedException, InvocationTargetException {
        SwingUtilities.invokeAndWait(AccessibilityJButtonBug::createTestUI);
    }
}

