как поместить компонент в центр другого компонента, который находится в JPanel - PullRequest
0 голосов
/ 19 октября 2018

Мне было интересно, как поместить JLabel или JPanel в центр таблицы JT, которая находится в JPanel.Я видел один пример с BufferedImage, но я не смог преобразовать его для некоторого резона, вот ссылка на пример: Поместить JLabel в Компонент в JPanel

https://i.stack.imgur.com/k8KUu.png

Я также добавил изображение, чтобы показать, что я имею в виду. Нажмите, чтобы увидеть нужный мне результат , кстати, вот как это выглядит, когда я использую Windows 8 сейчас ... любая идея?

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете добавить любой компонент непосредственно в таблицу (так работает редактор).

Вам просто нужно указать размер / расположение компонента:

JLabel label = new JLabel( "Please Wait" );
label.setSize( label.getPreferredSize() );
label.setLocation(20, 20);
table.add( label );
table.repaint();

ИлиВы можете использовать класс JLayer для украшения JTable.Прочтите раздел из учебника Swing по Как декорировать компоненты с помощью класса JLayer для получения дополнительной информации и рабочих примеров.

Редактировать:

Простой пример правильного MCVE"

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class PleaseWait extends JPanel
{
    PleaseWait()
    {
        JTable table = new JTable(5, 5);
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        add( new JScrollPane( table ) );

        JLabel label = new JLabel("Please Wait");
        label.setOpaque(true);
        label.setBackground(Color.LIGHT_GRAY);
        label.setBorder( new EmptyBorder(10, 10, 10, 10) );
        label.setSize( label.getPreferredSize() );
        label.setLocation(150, 20);
        table.add( label );
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("PleaseWait");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new PleaseWait());
        frame.pack();
        frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args) throws Exception
    {
        EventQueue.invokeLater( () -> createAndShowGUI() );
/*
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
*/
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...