我知道之前有人问这个问题,但我没有得到适当的解决方案.
我读到了大纲,但这与我想要的正好相反,即JTree
中的JTable我希望在JTable中显示数据,但它存储为不同的组,因此
当我花费一个组(节点)JTable时,这些组是JTree的节点显示该组.
我在oracle中阅读了这篇文章:在Swing中创建TreeTables:第1部分
这是相当陈旧的,不适用于我的java版本(我不知道为什么!),所以我
浏览了TreeTable的下一部分:在Swing中创建TreeTables:第2部分
整个代码比较新,因为它使用"javax.swing"代替
"com.sun.java.swing",但我遇到的问题是一个名为
"FileSystemModel2.java"的文件丢失了它是从以前的版本所以我不能
使用旧的.有一些方法添加到新的"FileSystemModel.java".如何通知
他们这个丢失的文件或如果你有不同的方法请告诉我.
我想要实现的目标如下图所示:

这张图片来自"LastPass",我想让我自己的密码管理器作为我的项目
所以请帮助我,我是如此接近,但我不能进一步.
我正在使用JList来保存聊天程序的聊天数据.
它使用自定义列表渲染器将自定义JPanel对象呈现为元素类型.
这个JPanel包含两个JLabel(锚定到顶部,用于名称和时间),以及一个JTextArea(锚定到底部,用于聊天消息).
它看起来像这样:
一张pic1 http://oi44.tinypic.com/20jiix5.jpg
一切都很好,但我想添加一个隐藏/显示功能.
使用以前编程的PopupMenu处理程序,当您右键单击元素时,会出现一个弹出窗口.
一张pic2 http://oi42.tinypic.com/2m5exxt.jpg
当你点击隐藏(或显示,它是一个切换),那么它应该最小化元素,如此...
一张pic3 http://oi41.tinypic.com/kf3apx.jpg
唯一的问题是......它不会更新JList单元格大小,因为您可以看到文本曾经是大的空白区域.
但是,当我输入另一条消息时......
一张pic4 http://oi40.tinypic.com/35jdoo7.jpg
JList修复了完成"隐藏"操作的单元格大小.
我的问题是如何让JList以编程方式重新验证/重绘/ etc.
并且不要以为我没有尝试过所有明显的解决方案......
public void setHidden(boolean hidden) {
// this is in the custom JPanel class
System.out.println("Initial: " + this.getPreferredSize());
// TextArea is the JTextArea which we set invisible when we want to hide it.
TextArea.setVisible(!hidden); // TextArea is a variable btw
this.invalidate();
this.validate();
this.repaint();
System.out.println("After: " + this.getPreferredSize());
container.revalidate();
}
/*
* This is what the above printlns show when you …Run Code Online (Sandbox Code Playgroud) 所以我们需要创建一个呈现地图的应用程序,我们目前正在使用Xamarin.Forms来集成它.但是,我们不会使用Xamarin.Forms.Maps,因为我们必须使用适用于iOS的Google Maps API而不是使用MapKit的原生地图.
我的问题是,如何在Xamarin.Forms中集成此组件https://components.xamarin.com/view/googleplayservices-maps?
有很多选项和自定义渲染器可用于将优先级 = 0 的 Xamarin Forms 工具栏项移动到 iOS 中导航栏的左侧,有人可以向我指出在 Android 上实现相同操作的方法吗?
在较高的层面上,我知道我们需要使用导航页面的自定义渲染器来完成此操作,但我不太清楚 Android 上的渲染器需要做什么来实现此目的。
任何帮助都是学徒。
谢谢
在我的Xamarin.Forms项目中,我使用MultiLineLabel在1或2行显示标题,具体取决于文本长度.我基于这个博客来实现这一目标.
所以我有一个MultiLineLabel控件:
public class MultiLineLabel : Label
{
private static int _defaultLineSetting = -1;
public static readonly BindableProperty LinesProperty = BindableProperty.Create(nameof(Lines), typeof(int), typeof(MultiLineLabel), _defaultLineSetting);
public int Lines
{
get { return (int)GetValue(LinesProperty); }
set { SetValue(LinesProperty, value); }
}
}
Run Code Online (Sandbox Code Playgroud)
我使用2个渲染器:
在iOS上,我保留了给定的渲染器:
public class CustomMultiLineLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
MultiLineLabel multiLineLabel = (MultiLineLabel)Element;
if (multiLineLabel != null && multiLineLabel.Lines != -1)
Control.Lines = multiLineLabel.Lines; …Run Code Online (Sandbox Code Playgroud)我想以 Xamarin 形式显示带圆角的进度条。我能够使用自定义渲染器在 iOS 中做到这一点:
class CustomProgressBarRenderer: ProgressBarRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ProgressBar> e)
{
base.OnElementChanged(e);
Control.ProgressTintColor = Color.FromRgb(255, 201, 74).ToUIColor();
}
public override void LayoutSubviews()
{
base.LayoutSubviews();
var X = 1.0f;
var Y = 7.0f;
CGAffineTransform transform = CGAffineTransform.MakeScale(X, Y);
this.Transform = transform;
this.ClipsToBounds = true;
this.Layer.MasksToBounds = true;
this.Layer.CornerRadius = 5; // This is for rounded corners.
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用自定义渲染器在 Android 中实现相同的效果。这就是我希望进度条(圆角)的外观。
custom-renderer xamarin.android progress-bar xamarin xamarin.forms
我在 XamarinForm 上使用 SearchBar,问题是只要搜索栏为空并且我按下搜索按钮,就不会触发 SearchCommand。
我尝试在xamarin 论坛的此链接上使用自定义渲染器, 但它不起作用。
public class CustomSearchBarRenderer : SearchBarRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
if (e.OldElement == null)
{
this.Control.QueryTextSubmit += (sender, args) =>
{
if (string.IsNullOrEmpty(args.Query) && Element.SearchCommand != null)
Element.SearchCommand.Execute(null);
};
}
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我
具有圆角的自定义searchBar渲染器:iOS
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
var searchbar = (UISearchBar)Control;
if (e.NewElement != null)
{
searchbar.Layer.CornerRadius = 20;
searchbar.Layer.BorderWidth =14;
searchbar.Layer.BorderColor = UIColor.FromRGB(240,240,240).CGColor;
}
}
Run Code Online (Sandbox Code Playgroud)
自定义SearchBar渲染器:Android?
我需要做同样的事情,就像我为ios,自定义搜索栏与圆角和其他一些自定义,为Android我没有得到足够的信息来解决这个问题.任何人都会提供一些指示或想法.
提前致谢.
我需要有一个密切的按钮(在这种特殊情况下),左侧的导航栏,如下图所示。我仅在弹出窗口中需要它,因此其他元素/导航没有潜在的问题。
Google对此提出了一些建议,但我只看到了iOS示例(这并不是要处理的大事iOS custom renderer),但没有提示如何使用Android(轻松)处理它。
需要明确的是,它需要使用它来Xamarin.Forms定义与此(或代码隐藏)类似的内容:
<ContentPage.ToolbarItems>
<ToolbarItem Text="X" Priority="-1" Command="{Binding GoCancel}"/>
<ToolbarItem Icon="icon_save" Command="{Binding GoSave}"/>
</ContentPage.ToolbarItems>
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
Javascript 代码完美地调用了我的 C# 代码,但是最近在最新更新之后,WebView 控件不再能够使用 API 调用 C# 操作(更准确地说,如果我的目标是 Android 9.0(API 级别 28)或更高版本) 27级还是可以的
经过更多调查后,我发现编译器会发出关于 [JavascriptInterface] 已过时的警告! https://learn.microsoft.com/en-us/dotnet/api/android.webkit.javascriptinterface?view=xamarin-android-sdk-9 他们建议使用 (IJavascriptInterface)
这是要审查的代码
[JavascriptInterface]
[Export ("invokeAction")]
public void InvokeAction (string data)
{
HybridWebViewRenderer hybridRenderer;
if (hybridWebViewRenderer != null && hybridWebViewRenderer.TryGetTarget (out hybridRenderer))
{
hybridRenderer.Element.InvokeAction (data);
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何正确实现此问题来修复该问题并让 Javascript 再次调用我的 C# 代码。
custom-renderer ×10
android ×4
xamarin ×4
c# ×2
java ×2
swing ×2
google-maps ×1
jlist ×1
jpanel ×1
jtreetable ×1
label ×1
multiline ×1
progress-bar ×1