Можно ли иметь JPanel над JTable - PullRequest
1 голос
/ 09 апреля 2010

У меня есть JTable, связанный TableModel может быть изначально пустым. Поэтому в настоящее время он показывает JTable со своими столбцами и без строк.

Чтобы заполнить это JTable, я хочу, чтобы пользователь перетаскивал элементы из другого компонента. Проблема в том, что я хотел бы намекнуть пользователю, что он / она должен перетаскивать элементы в эту таблицу, с некоторым сообщением типа "Перетащите сюда xxx, чтобы добавить строку" .

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

Кто-нибудь знает, как это сделать? Или я должен придерживаться CardLayout для переключения на / из подсказки и JTable?

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 09 апреля 2010

Взгляните на OverlayLayout , я думаю, что он может делать то, что вы хотите.

1 голос
/ 09 апреля 2010

Пара предложений:

  • Добавьте всплывающую подсказку к JTable, используя setToolTipText(String). Вам нужно добавить его к окружающему JScrollPane, чтобы всплывающая подсказка отображалась, когда пользователь наводит курсор на пустой видовой экран.
  • Добавить название Border; например scrollPane.setBorder(BorderFactory.createTitledBorder("Drag items here"));
0 голосов
/ 11 апреля 2010

Я бы сделал это так ... Создайте JPanel, который будет содержать JTable сверху и JLabel снизу. Как то так ...

JPanel container = new JPanel( new BorderLayout() );
container.add( table, BorderLayout.CENTER );
JLabel label = new JLabel( "Drag XXX here to add a row" );
container.add( table, BorderLayout.SOUTH );

Затем создайте метки и метки для таблицы. Возможно, вам придется поиграть с лейблом, чтобы он выглядел и вел себя правильно. Установить непрозрачный в true возможно? Установить его фон в белый цвет, чтобы соответствовать таблице? Также, возможно, поиграйте с границами всех трех, чтобы они выглядели интегрированными друг с другом. Вы можете удалить метку после добавления первой строки, если вы хотите именно такого поведения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...