Нижний элемент наезжает на верхний

107
25 декабря 2020, 07:50

Столкнулся с такой проблемой. При схлопывании окна нижний JXTaskPaneContainer наезжает на верхний элемент (JTextArea). Происходит из-за того, что я в JTextArea в конструкторе жестко задал границы, т.к. необходимо было убрать большую пустую область между двумя элементами и зафиксировать Area примерно на одном уровне с Container. Часть кода - класс и конструктор класса ниже прилагаю. Как решить проблему?

UPD - если убрать бордеры (EmptyBorder у JTextArea), верстка не едет, но теперь будет большое пространство между элементами, но необходимо, чтобы пространство было как на первой картинке, т.е. минимальное.

    private class ExtendedStatusPanel extends JPanel {
            protected JLabel serverNameLabel;
            protected JTextArea statusPanel;
            private final JPanel statusPanelWrapper = new JPanel(new FlowLayout(FlowLayout.LEFT));
            private List<MonitorStatus> alertsGroups;
            private JXTaskPaneContainer jxTaskPaneContainer = new JXTaskPaneContainer();
            public ExtendedStatusPanel(final MonitorServer monitorServer) {
                setLayout(new BorderLayout());
                setBorder(BorderFactory.createLineBorder(Color.BLACK));
                final JPanel serverNamePanel = new JPanel(new FlowLayout(0));
                (serverNameLabel = new JLabel(monitorServer.getHost(), 2)).setCursor(Cursor.getPredefinedCursor(12));
                serverNameLabel.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(final MouseEvent mouseEvent) {
                        monitorClient.selectDetailsTab();
                        monitorClient.selectServer(monitorServer);
                    }
                });
                serverNamePanel.add(serverNameLabel);
                jxTaskPaneContainer.setBackground(new Color(238,238,238));
                statusPanelWrapper.setLayout((new BoxLayout(statusPanelWrapper, 3)));
                statusPanel = new JTextArea();
                statusPanel.setForeground(UIManager.getColor("Label.foreground"));
                statusPanel.setBackground(UIManager.getColor("Label.background"));
                statusPanel.setBorder(new EmptyBorder(10,15,-200,10));
                statusPanel.setEditable(false);
                statusPanel.setFont(UIManager.getFont("Label.font"));
                statusPanel.getKeymap().addActionForKeyStroke(ks, TransferHandler.getCopyAction());
                alertsGroups = new ArrayList<>();
                statusPanelWrapper.add(statusPanel);
                statusPanelWrapper.add(jxTaskPaneContainer);
                add(serverNamePanel, "North");
                add(statusPanelWrapper, "Center");
            }
}
READ ALSO
Как определить что произошел клик по изображению нарисованному при помощи drawImage

Как определить что произошел клик по изображению нарисованному при помощи drawImage

Есть элемент созданный с помощью drawImage и какого-либо изображенияХотелось бы узнать, как можно реализовать удаление элемента по клику на нём?

130
Не понимаю работу (Math.random())

Не понимаю работу (Math.random())

Не понимаю как отрабатывает Mathrandom() и что он генерирует и умножает на surnameLength например

122
Помогите разобраться с protected?

Помогите разобраться с protected?

Во время подготовки к экзамену OCA по Боярскому, встретил пример на стр178 Он касается модификатора доступа protected и звучит примерно так, что...

134
Что значит ошибка: reached end of file while parsing }

Что значит ошибка: reached end of file while parsing }

Вот здесь похожий вопросОтвет кроется в вашем методе main(){} как уже подметил @Grundy

326