我正在尝试制作一个小GUI。它有三个复选框和一个按钮。 (下面的图片)我有一个头部的图像,我希望其他图像放在顶部。这样当我选择它们并按下按钮时它们就会改变。目前在我的处理程序中,我只有一个ImageIcon。 当我运行代码时,“coolBrows.png”图像不显示。我在这里看到了一些关于向JFrame添加JFrame的例子,他们说我需要为它添加一个布局才能工作。我已经做到了,它仍然不会出现......任何帮助表示赞赏! 注意:每个图像都具有相同的尺寸,但是要叠加的图像具有透明背景。
很抱歉,如果我违反了以前从未在此发布过的任何约定。
GUI
height
答案 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
。
所以也许你可以使用:
JLabels
分层标签。因此,您为每个面部特征创建一个图层,并为图层添加标签。然后,您可以根据复选框的值添加/删除标签中的图标。阅读How to Use Layered Panes上Swing教程中的部分,了解更多信息和工作示例。
使用Compound Icon分层图标。这允许您将图标堆叠在一起,然后在单个JLayeredPane
上显示结果Icon
。因此,每次通过单击复选框生成事件时,您都可以使用所选功能重建JLabel
并重置CompoundIcon
上的Icon
。