Как добавить компонент и вывести его на JFrame в Java?

Я делаю Java-класс, который конструктор получит JForm от его параметра, а затем добавит JTable в этой форме программно, как показано в коде ниже...

public class DEMOCLASS
{
private JTable myJTable = new JTable();
public DEMOCLASS(JFrame incomingForm)
    {  
        incomingForm.add(myJTable);
        myJTable.setSize(coloumWidth,rowHeight);
        myJTable.setLocation(xpos, ypos);
        myJTable.setVisible(true);  
        //incomingForm.setComponentZOrder(myJTable,0);    // Its Bringing The Component To From But Spreading It All Over The Form From Top To Bottom And Left To Right Fully :(      
    }
}

Теперь главная проблема в том, что там, где этот класс вызывается, есть много компонентов, уже добавленных другим кодированием, и я хочу привести myJTable компонент на передней панели, который теперь прячется за ними. Короче говоря, я не могу контролировать другие уже добавленные компоненты. Я также слышал о MyGlassPane а также JLayeredPane но не могу заставить их работать с моей концепцией здесь.

Мой главный вопрос - как это сделать? myJTable в передней части всех ранее добавленных компонентов на incomingForm?

1 ответ

Решение

Логика рисования Swing по умолчанию заключается в том, что последний компонент, добавленный на панель, закрашивается первым.

Вы можете изменить это, играя с ZOrder, как вы пытались сделать с закомментированным кодом.

Однако Swing на самом деле не предназначен для нанесения компонентов друг на друга. Компоненты обычно располагаются в двухмерной области, а не в трехмерной. Ваша причина для этого неясна.

Я бы предположил, что вы могли бы:

  1. Использовать ребенка JDialog чтобы отобразить таблицу и ее данные (вы можете сделать диалоговое окно неукрашенным для удаления границ).
  2. Возможно, используйте GlassPane для отображения таблицы.
Другие вопросы по тегам