如何在JPane中添加和删除JLabel?

时间:2017-04-01 01:39:07

标签: java swing user-interface

我正在尝试制作一个小GUI。它有三个复选框和一个按钮。 (下面的图片)我有一个头部的图像,我希望其他图像放在顶部。这样当我选择它们并按下按钮时它们就会改变。目前在我的处理程序中,我只有一个ImageIcon。 当我运行代码时,“coolBrows.png”图像不显示。我在这里看到了一些关于向JFrame添加JFrame的例子,他们说我需要为它添加一个布局才能工作。我已经做到了,它仍然不会出现......任何帮助表示赞赏! 注意:每个图像都具有相同的尺寸,但是要叠加的图像具有透明背景。

很抱歉,如果我违反了以前从未在此发布过的任何约定。

GUI

enter image description here

height

1 个答案:

答案 0 :(得分:1)

因此,您似乎需要分层 InitializeComponent(); DummyClassCollection = new ObservableCollection<DummyClass>(); DummyClassCollection.Add(new DummyClass() { DisplayValue = "Item1", SelectedValue = 0 }); DummyClassCollection.Add(new DummyClass() { DisplayValue = "Item2", SelectedValue = 1 }); table = new DataTable(); dgData.ItemsSource = table.DefaultView; DataGridTemplateColumn templateColumn = new DataGridTemplateColumn(); DataTemplate dataTemplate = new DataTemplate(); FrameworkElementFactory control = new FrameworkElementFactory(typeof(ComboBox)); control.SetValue(ComboBox.ItemsSourceProperty, DummyClassCollection); control.SetValue(ComboBox.DisplayMemberPathProperty, "DisplayValue"); control.SetValue(ComboBox.SelectedValuePathProperty, "SelectedValue"); control.AddHandler(ComboBox.SelectionChangedEvent, new SelectionChangedEventHandler(ComboBox_SelectionChanged)); Binding b = new Binding(); b.Path = new PropertyPath("tableID"); b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; b.Mode = BindingMode.TwoWay; control.SetBinding(ComboBox.SelectedValueProperty, b); dataTemplate.VisualTree = control; templateColumn.CellTemplate = dataTemplate; //dgData.AutoGenerateColumns = false; dgData.Columns.Add(templateColumn); string connection = @"Data Source = " + database + "; Version=3; foreign keys=true;"; sqlc = new SQLiteConnection(connection); sqlcmd = new SQLiteCommand("SELECT * FROM tblExample", sqlc); adapter = new SQLiteDataAdapter(sqlcmd); sqlcmdb = new SQLiteCommandBuilder(adapter); adapter.InsertCommand = sqlcmdb.GetInsertCommand(); adapter.UpdateCommand = sqlcmdb.GetUpdateCommand(); adapter.DeleteCommand = sqlcmdb.GetDeleteCommand(); adapter.AcceptChangesDuringUpdate = true; adapter.Fill(table); templateColumn.Header = table.Columns[1].ColumnName; Icons

所以也许你可以使用:

  1. JLabels分层标签。因此,您为每个面部特征创建一个图层,并为图层添加标签。然后,您可以根据复选框的值添加/删除标签中的图标。阅读How to Use Layered Panes上Swing教程中的部分,了解更多信息和工作示例。

  2. 使用Compound Icon分层图标。这允许您将图标堆叠在一起,然后在单个JLayeredPane上显示结果Icon。因此,每次通过单击复选框生成事件时,您都可以使用所选功能重建JLabel并重置CompoundIcon上的Icon