如何启用使用分层布局布局的两个组件以同时接收事件



我正在使用分层布局在文本区域的右上角用一个小按钮覆盖文本区域(该按钮用于插入时间戳以轻松确定手动文本条目的日期(。

我希望小按钮在用户"单击"它时接收事件,并且还允许用户单击下面的文本区域以手动编辑文本。但是,当我使用 LayeredLayout 时,只有最后添加的组件才会收到事件。这意味着只有 textArea 处于活动状态且无法按下小按钮,或者可以按下按钮,但用户无法单击 TextArea 来启动编辑。希望描述足够清晰,可以理解。

据我所知,其他现有的布局都不适合这种情况。有没有办法实现这一目标?

提前感谢您的任何想法或建议。

两者都在单击时接收事件,我们经常使用此模式。我假设您在编辑时尝试按下按钮,这是有问题的,因为编辑将指针事件委托给本机操作系统编辑代码。

看:

Form current = new Form("TextAreaButton", BoxLayout.y());
TextArea ta = new TextArea("Text of Text Area");
ta.addActionListener(e -> Log.p("Text is: " + ta.getText()));
Button b = new Button("");
b.addActionListener(e -> ta.setText(""));
FontImage.setMaterialIcon(b, FontImage.MATERIAL_CLEAR);
current.add(
        LayeredLayout.encloseIn(ta,
                BorderLayout.east(b))
);
current.show();

最新更新