Tag: combobox

JavaFX ComboBox图像

我正在尝试创建一个ComboBox ,它将显示所选Image的预览,但ComboBox会显示字符串值。 唯一可行的方法是创建Node ComboBox ,但这会导致一旦选定的选项从下拉菜单中消失,如果有人有任何建议,将会很感激。 我的代码如下: String notOnLine = “file:Java1.png”; String onLine = “file:Java2.png”; ObservableList options = FXCollections.observableArrayList(); options.addAll(notOnLine, onLine); final ComboBox comboBox = new ComboBox(options); comboBox.setCellFactory(c -> new StatusListCell()); 和ListCell : public class StatusListCell extends ListCell { protected void updateItem(String item, boolean empty){ super.updateItem(item, empty); setGraphic(null); setText(null); if(item!=null){ ImageView imageView = new ImageView(new Image(item)); […]

javafx创建ComboBox TableCell

我正在尝试在TableView中创建自定义TableCell。 我希望它显示一个ComboBox,我可以在其中选择一个String值,然后显示String值,就好像它是一个用户输入。 这个想法是用户不知道哪些是允许的值,所以他可以简单地在ComboBox中选择其中一个。 我试图制作我自己的“ComboBoxCell”,但它没有按预期工作: public class ComboBoxCell extends TableCell { private ComboBox comboBox; public ComboBoxCell() { } @Override public void startEdit() { super.startEdit(); if (comboBox == null) { createComboBox(); } setGraphic(comboBox); setContentDisplay(ContentDisplay.GRAPHIC_ONLY); } @Override public void cancelEdit() { super.cancelEdit(); setText(String.valueOf(getItem())); setContentDisplay(ContentDisplay.TEXT_ONLY); } public void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (empty) { setText(null); […]

Java阻止JComponent的焦点

我为我的申请做了一个gui。 JFrame有2个JPanel,panel1和panel2。 panel1就是这样,一个带有自定义绘画的JPanel,每5毫秒重绘一次。 panel2是我第一次尝试CardLayout:它包含JPanels subPanel1和subPanel2。 subPanel1包含一个JComboBox并添加到panel2: panel2.add(subPanel1); 。 subPanel2有.setLayout(new CardLayout()); 命令,我添加3个新的JPanels,适当的itemListener和所有。 当然我也添加它: panel2.add(subPanel2); 现在问题是:在Java中集中组件。 我知道方法setFocusable(boolean)和requestFocus() 。 但我不能让它们以任何合乎逻辑的方式行事。 首先,它们的根本问题是:当combobox获得焦点时,我根本无法完全聚焦它(尝试用光标点击到处)。 以下是我进行的实验: 1)没有任何代码在整个应用程序中进行聚焦,无论将哪个命令面板1和面板2添加到JFrame,combobox都从焦点开始。 2)如果我设置了panel1.setFocusable(true); (在它的构造函数中)它将从焦点开始 3)如果我设置了panel1.setFocusable(false); 并要求专注于它,它没有得到它。 (只有按预期工作的东西) 4)如果我将panel2,subPanel1或subPanel2设置为单独或以任何组合不可聚焦,它们仍然可以获得焦点(combobox,即,这是唯一能够注册焦点的组件)。 5)如果我将combobox设置为不可聚焦,我仍然可以使用框’itemListener在CardLayout中的卡之间滚动,但焦点不会粘在它上面。 事实上,panel1仍然记录键盘输入 所以我真的很担心整个’焦点’的事情。 也许这不是我认为的那样? 我想要做的是完全阻止与panel2的所有交互,直到一个标志(每5毫秒评估一次)为真。 我是否正确假设与JPanel不同,JComboBox会自动拥有一个mousebuttonListener,以便在点击时获得焦点? 如果不是,那么如何完全禁用JComboBox和当前卡显示的所有组件? 不可聚焦组件中的组件仍然可以聚焦是否是正常行为?

为javaFx表视图中的每一行动态填充combobox列表

我在java Fx中创建了一个表视图,表视图中的一列包含ComboBoxTableCell。请在下面找到表视图的代码 public class TabViewController { @FXML private TabPane cnfmTab; @FXML private TableView partsTable; @FXML private TableColumn column1; @FXML private TableColumn column2; @FXML private TableColumn column3; private ObservableList tableData = FXCollections.observableArrayList(); private ObservableList column1List; @FXML public void initialize(){ tableData = FXCollections.observableArrayList(callDAO.getTableData(1)); column1.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getColumn1())); column1 .setCellFactory(new Callback<TableColumn, TableCell>() { @SuppressWarnings({ “rawtypes”, “unchecked” }) public […]

什么是Swing – 相当于HTML

我希望我的JComboBox将多个选项组合在一起,类似于HTML optgroup : 我在Swing找不到任何解决方案。 操作Combobox的UI-Renderer似乎是一个坏主意,因为它依赖于操作系统和L&F(它们是私有的,因此无法扩展)。

JComboBox中每个项目的多种颜色

我正在尝试制作一个ComboBox,它为不同的项目使用不同的颜色。 我写了一些测试代码,但它似乎不起作用。 添加渲染器会导致程序崩溃,但将其注释掉会使框显示在框架中。 有什么我想念的,或者我做错了吗? 我尝试使用自定义ComboBox Renderer教程作为示例。 这是我的代码: TestComboColor.java import java.awt.Color; import javax.swing.JComboBox; import javax.swing.JFrame; public class TestComboColor { static Color[] colors = {Color.BLUE, Color.GRAY, Color.RED}; static String[] strings = {“Test1”, “Test2”, “Test3”}; public static void main(String[] args) { JFrame frame = new JFrame(“JAVA”); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JComboBox cmb = new JComboBox(); ComboBoxRenderer renderer = new ComboBoxRenderer(cmb); renderer.setColors(colors); […]

JavaFX:使用Object属性的ComboBox

让我们说我有一节课: public class Dummy { private String name; private String someOtherProperty; public String getName() { return name; } } 我有这个类ArrayList dummyList; 我是否可以创建一个带有Object name属性作为选择选项的JavaFX ComboBox,而无需使用对象名称创建新的ArrayList ? 伪代码: ObservableList dummyO = FXCollections.observableArrayList(dummyList); final ComboBox combo = new ComboBox(dummyO); // -> here dummyO.name? (可选)理想情况下,虽然应该显示名称,但是当选择了一个选项时, combo.getValue()应该返回所选Dummy的引用,而不仅仅是名称。 那可能吗?

如何更改JComboBox下拉列表的宽度?

我有一个可编辑的JComboBox ,其中包含单个字母值的列表。 因此,combobox非常小。 每个字母都有一个特殊的含义,在很少使用字母的情况下,有时用户不清楚。 因此我创建了一个自定义ListCellRenderer ,它显示了下拉列表中每个字母的含义。 不幸的是,这种解释不适用于下拉列表,因为它很小,因为它具有与combobox相同的宽度。 有没有办法让下拉列表比combobox更宽? 这就是我想要实现的目标: ——————— | Small JCombobox | V | ——————————————– | “Long item 1” | ——————————————– | “Long item 2” | ——————————————– | “Long item 3” | ——————————————– 我无法改变combobox的宽度,因为应用程序是旧的遗留应用程序的重新创建,其中某些东西必须与之前完全一样。 (在这种情况下,combobox必须不惜一切代价保持它的小尺寸)