Как узнать, какой объект в настоящее время фокусируется

Вы можете попробовать что-то вроде этого ..

public static class QueryableExtensions
{
    public enum SortDirection { ASC,DESC}
    static LambdaExpression CreateExpression(Type type, string propertyName)
    {
        var param = Expression.Parameter(type, "x");
        Expression body = param;
        body = propertyName.Split('.')
            .Select(prop => body = Expression.PropertyOrField(body, prop))
            .Last();
        return Expression.Lambda(body, param);
    }
    public static IQueryable<T> SortBy<T>(this IQueryable<T> source,string expressionField,SortDirection sortDirection = SortDirection.ASC)
    {
        var lambdaExpression = CreateExpression(typeof(T), expressionField) as dynamic;
        return sortDirection == SortDirection.ASC ? Queryable.OrderBy(source,lambdaExpression) : Queryable.OrderByDescending(source, lambdaExpression);
    }

}

типов

public class TvRequests
{
    public string Title { get; set; }
    public OmbiUser RequestedUser { get; set; }

    public DateTime Date { get; set; }
}

public class OmbiUser
{
    public string Username;
    public DateTime Date { get; set; }
}

с использованием

    List<TvRequests> reqList = new List<TvRequests>();
    reqList.Add(new TvRequests {
        Title = "A",
        Date = DateTime.Now.AddDays(-1),
        RequestedUser = new OmbiUser
        {
            Username = "A",
            Date = DateTime.Now.AddDays(-1)
        }
    });
    reqList.Add(new TvRequests
    {
        Title = "C",
        Date = DateTime.Now.AddDays(1),
        RequestedUser = new OmbiUser
        {
            Username = "C",
            Date = DateTime.Now.AddDays(1)
        }
    });
    reqList.Add(new TvRequests
    {
        Title = "B",
        Date = DateTime.Now,
        RequestedUser = new OmbiUser
        {
            Username = "B",
            Date = DateTime.Now
        }
    });
    foreach (var item in reqList.AsQueryable().SortBy("Date", SortDirection.DESC))
        Debug.WriteLine(item.Title);
    foreach (var item in reqList.AsQueryable().SortBy("RequestedUser.Date"))
        Debug.WriteLine(item.Title);
    foreach (var item in reqList.AsQueryable().SortBy("RequestedUser.UserName",SortDirection.DESC))
        Debug.WriteLine(item.Title);
27
задан Rob Heiser 15 February 2016 в 18:25
поделиться

5 ответов

JFrame.getFocusOwner() (наследованный от Window.getFocusOwner()) должен возвратить ссылку на компонент с фокусом. getMostRecentFocusOwner() мог бы также представлять интерес.

31
ответ дан Rob 28 November 2019 в 04:32
поделиться

Также взгляните на javax.swing. FocusManager

3
ответ дан user85421 28 November 2019 в 04:32
поделиться

getFocusOwner () возвратит дочерний компонент, который в настоящее время фокусируется.

Но необходимо проверить, чтобы видеть, является ли это JTextField. Другие кнопки Мне нравится компонентов могли бы быть сфокусированы, если они существуют в Вашем кадре также.

3
ответ дан euphoria83 28 November 2019 в 04:32
поделиться

Это учебное руководство должно быть довольно полезным для понимания фокуса.

0
ответ дан Mitch Flax 28 November 2019 в 04:32
поделиться

Каждый JComponent имеет hasFocus метод, который можно использовать для проверки, если это фокусируется. Однако это было изменено, и теперь необходимо использовать isFocusOwner.

Таким образом работавший все текстовые поля в Вашем кадре, и проверяют каждого из них, если это - isFocusOwner путем вызова того метода.

Вы могли также получить владельца фокуса через кадр.

1
ответ дан Uri 28 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: