【问题标题】:Single MouseListener Event to get text from JTextArea从 JTextArea 获取文本的单个 MouseListener 事件
【发布时间】:2015-02-08 15:26:06
【问题描述】:

我正在创建一个足球抽签应用程序。我目前有 9 个文本区域,其中包含 6 个不同的团队。我已将MouseListener 附加到每个文本区域。当您单击文本区域时,您会看到一个新窗口,其中每个团队都被分成一组格式。

我在尝试从文本区域获取文本时遇到问题。我可以通过在每个单独的文本区域添加MouseListener 来实现这一点,但据我所知,这违反了不要重复自己 (DRY) 原则。

我在下面包含了我的代码:

gui.getTable1().addMouseListener(new tableListener());
gui.getTable2().addMouseListener(new tableListener());
gui.getTable3().addMouseListener(new tableListener());
gui.getTable4().addMouseListener(new tableListener());
gui.getTable5().addMouseListener(new tableListener());
gui.getTable6().addMouseListener(new tableListener());
gui.getTable7().addMouseListener(new tableListener());
gui.getTable8().addMouseListener(new tableListener());
gui.getTable9().addMouseListener(new tableListener());


public static class TableListener implements MouseListener {

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        //get text from text area and pass to new GUI
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
    }
}

我想对我的所有文本区域使用 TableListener 私有类,而不是 9 个不同的 MouseListeners。我认为这可以在一行中完成,但我想不出怎么做。有人可以帮忙吗?

【问题讨论】:

  • 1+ 为 DRY 原则。请注意,我已更正您的类名称以符合 Java 代码约定:类名称以大写字母开头。

标签: java swing jtextarea mouselistener mouse-listeners


【解决方案1】:

仅将一个侦听器实例附加到所有 textarea 并使用 e.getSource() 获取事件源 textarea。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多