2

HTML要素のタイプに基づいてコンテキストメニューオプションを指定したWebビューがあります。3 つのメニュー項目を持つ要素はほとんどなく、6 つのメニュー項目を持つ要素はほとんどありません。 ここに画像の説明を入力

ここに画像の説明を入力

上の 2 つの画像はいくつかの例です。テキスト フィールドを右クリックすると、6 つのメニュー オプションが表示されます。リンクを右クリックすると、2 つのメニュー項目が表示されます。

ここで、テキスト フィールドをもう一度右クリックすると問題が発生します。前のメニューのサイズ (つまり、2 行のみ) のコンテキスト メニューが表示されます。ただし、テキスト フィールドをもう一度右クリックすると、正しく表示されます。以下はそれを示す画像です。

ここに画像の説明を入力

これはJavaFXの問題ですか、それとも何か不足していますか? 助けてください。私のコードはこのようなものです。

List<MenuItem> menus = new ArrayList<MenuItem>();
if(action.equals("Editbox")){
                createContextMenu(webView, VerifyActionsUtil.getActionItems(action), x, y);
            }else if(action.equals("Link")){
                createContextMenu(webView, VerifyActionsUtil.getActionItems(action), x, y);
            }else{
                createContextMenu(webView, menus, x, y);
}

public void createContextMenu(WebView webView, List<MenuItem> menus, int x, int y) {
        menu.getItems().clear();
        if(menus!=null && menus.size()>0){
            menu.getItems().addAll(menus);
            menu.show(webView, x, y);
        }
    }

action要素の型をチェックするために使用されるオブジェクトです。VerifyActionsUtil.getActionItems(action)に応じて、メニュー項目のリストが表示されますaction

public class VerifyActionsUtil {


    MenuItem item0=new MenuItem("check_if_enabled-True");
    MenuItem item1=new MenuItem("check_if_exists-True");
    MenuItem item2=new MenuItem("check_if_displayed-True");
    MenuItem item3=new MenuItem("get_the_text_of_the_textfield");

    public VerifyActionsUtil() {

        item0.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                insert(item0);
            }
        });
        //similar actions for other menu items
        //insert method inserts the details into a table.

   }
   public List<MenuItem> getActionItems(String objectType) {

        List<MenuItem> menuItems = new ArrayList<MenuItem>();
        if("Editbox".equals(objectType)){
            menuItems.add(item0);
            menuItems.add(item9);
            menuItems.add(item1);
            menuItems.add(item10);
            menuItems.add(item2);
            menuItems.add(item3);
            menuItems.add(item4);
            menuItems.add(item5);
        }else if("Radio".equals(objectType)){
            menuItems.add(item1);
            menuItems.add(item10);
            menuItems.add(item2);
            menuItems.add(item0);
            menuItems.add(item9);
            menuItems.add(item5);
        }
        return menuItems;
    }
4

0 に答える 0