Class SimpleTerminalResizeListener

  • All Implemented Interfaces:
    TerminalResizeListener

    public class SimpleTerminalResizeListener
    extends java.lang.Object
    implements TerminalResizeListener
    This class is a simple implementation of Terminal.ResizeListener which will keep track of the size of the terminal and let you know if the terminal has been resized since you last checked. This can be useful to avoid threading problems with the resize callback when your application is using a main event loop.
    • Field Detail

      • wasResized

        boolean wasResized
    • Constructor Detail

      • SimpleTerminalResizeListener

        public SimpleTerminalResizeListener​(TerminalSize initialSize)
        Creates a new SimpleTerminalResizeListener
        Parameters:
        initialSize - Before any resize event, this listener doesn't know the size of the terminal. By supplying a value here, you control what getLastKnownSize() will return if invoked before any resize events has reached us.
    • Method Detail

      • isTerminalResized

        public boolean isTerminalResized()
        Checks if the terminal was resized since the last time this method was called. If this is the first time calling this method, the result is going to be based on if the terminal has been resized since this listener was attached to the Terminal.
        Returns:
        true if the terminal was resized, false otherwise
      • getLastKnownSize

        public TerminalSize getLastKnownSize()
        Returns the last known size the Terminal is supposed to have.
        Returns:
        Size of the terminal, as of the last resize update
      • onResized

        public void onResized​(Terminal terminal,
                              TerminalSize newSize)
        Description copied from interface: TerminalResizeListener
        The terminal has changed its size, most likely because the user has resized the window. This callback is invoked by something inside the lanterna library, it could be a signal handler thread, it could be the AWT thread, it could be something else, so please be careful with what kind of operation you do in here. Also, make sure not to take too long before returning. Best practice would be to update an internal status in your program to mark that the terminal has been resized (possibly along with the new size) and then in your main loop you deal with this at the beginning of each redraw.
        Specified by:
        onResized in interface TerminalResizeListener
        Parameters:
        terminal - Terminal that was resized
        newSize - Size of the terminal after the resize