我对Jcombobox有疑问...例如,我有一个gui,其中包含一个jcombo框和一个按钮......在Jcombo框中,我添加了字符串数组对象,如颜色1,颜色2,颜色3:字符串[] colors = {"Color 1","Color 2","Color 3"}.我可以通过使用colorchooser点击按钮时选择颜色,它只会应用到按钮....但我想设置前景颜色到了"颜色1","颜色2"在tat组合框中...例如:如果我选择颜色为红色通过按钮,它应该应用于jcombobox上的前景颜色仅"SELECTED ITEM"(示例颜色1应显示为RED,其他应该是默认颜色!
...我是Java新手......如果有人知道,请帮助我..谢谢
我已经尝试在JComboBox上使用getInputMap()+ getActionMap(),它似乎没有任何效果.
我在JComboBox上尝试过addActionListener()/ addItemListener(),我似乎无法区分选择更改与按Return/Enter键的人.
有什么建议?在我的应用程序中,我希望Return/Enter键比仅选择更强,这是一个选择+应用操作.
这是我设置密钥绑定的代码.note("hit ENTER")当组件是a时JList,它工作正常(例如被调用),但当组件是JComboBox时,它不起作用.
private void setupApplyProfile(final JComponent component, final MyComboBoxModel mcbm)
{
String enterAction = "applyItem";
KeyStroke enterKey = KeyStroke.getKeyStroke("ENTER");
component.getInputMap().put(enterKey, enterAction);
component.getActionMap().put(enterAction, new AbstractAction()
{
@Override public void actionPerformed(ActionEvent e) {
note("hit ENTER");
applySelectedProfile(mcbm);
}
});
}
Run Code Online (Sandbox Code Playgroud) 我想知道如何将ActionListener添加到JComboBox.我正在使用AWT.你能解释一下吗?谢谢.
我有一张桌子.对该表更新数据库的更改.一列由该表中的JComboBox编辑.单击该列中的任何单元格将触发tableChanged事件.但是,在选择JComboBox的项目后需要触发它.如何在选择后使tableChanged出现?
public class JIDCellEditor extends AbstractCellEditor implements TableCellEditor {
JComboBox jComboBox;
@Override
public Object getCellEditorValue() {
return jComboBox.getSelectedItem();
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
Vector vector = new Vector();
vector.add(0);
for (int i = 0; i < table.getRowCount(); i++) {
if (!vector.contains(table.getValueAt(i, 0)) && table.getValueAt(i, 3).toString().equals("Female")) {
vector.add(table.getValueAt(i, 0));
}
}
vector.remove(table.getValueAt(row, 0));
jComboBox = new JComboBox(vector);
jComboBox.setSelectedItem(value);
return jComboBox;
}
}
Run Code Online (Sandbox Code Playgroud) 我是编程的新手,正在尝试了解基础知识。我试图从JComboBox计算两个整数,并在单击JButton时将结果存储在JTextField中。但是我如何通过不输入1,2,3,4,.. 30,31 ..等等来设置数字1到100。我刚刚得到了JButton的代码,它可以与此代码一起使用
// I used this to call the numbers into the JComboBox
// but it would be a nightmare if i will continue to do this until 100
cb1.addItem(new Integer(1));
cb1.addItem(new Integer(2));
cb1.addItem(new Integer(3));
// ...
cb2.addItem(new Integer(1));
cb2.addItem(new Integer(2));
cb2.addItem(new Integer(3));
// ...
// the code for the JButton which i got from this site
int cb1Int = Integer.parseInt(cb1.getSelectedItem().toString());
int cb2Int = Integer.parseInt(cb2.getSelectedItem().toString());
txt.setText(String.valueOf(cb1Int + cb2Int));
Run Code Online (Sandbox Code Playgroud)
这段代码工作得很好,但是我认为调用数字1到100的较短代码会很有帮助。
我试图找出如何检测当用户按Tab键或通过鼠标单击组件区域外时JComboBox是否失去焦点.
将FocusListener添加到JComboBox的编辑器组件对我没有帮助,因为我无法确定用户是否使用了鼠标或通过tab键移动了焦点.任何想法将不胜感激.
编辑1:我想要实现的是:
编辑2:似乎我必须使用setFocusTraversalKeysEnabled(false)在TAB被按下时获得通知,当我捕获该事件时,我应该手动转移焦点...我不喜欢这个解决方案,但这是迄今为止我能来的最好的起来.
解:
以下Java代码实际上解决了我的问题.正如我在Edit 2中所写,最简单的解决方案是禁用焦点遍历.我无耻地借用了Kleopatra的代码,现在一切正常.:)
if (!isTableCellEditor()) {
comboBoxEditor.setFocusTraversalKeysEnabled(false);
Action myAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
handleTabPress();
comboBoxEditor.transferFocus();
} // actionPerformed() method
};
comboBoxEditor.getActionMap().put("tab-action", myAction);
comboBoxEditor.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("TAB"), "tab-action");
} // if
Run Code Online (Sandbox Code Playgroud)
感谢所有参与者的讨论!
所以我的文字比他们占用的一些组件要长一些.我已经为大多数问题提出了合理的解决方案,但我不知道如何处理组合框中的非常长的文本项.如果用户看不到文本,他就无法做出正确的决定 - 特别是如果文本的第一部分匹配.请参阅下面的我的SSCCE.
我使用JScrollpane来解决JTextfield中的长文本问题,并且我使用工具提示来解析JXhyperlink字段中的长文本.另外,我为组合框提供了一个工具提示,它可以在选择后显示一个长项,但理想情况下我想在用户做出选择之前将该选项提供给用户.这个代码示例使用Netbeans的GUI设计器(非常适合RAD目的)放在一起,布局是GUI设计者使用的GroupLayout.
package longtextsexample;
import javax.swing.JFileChooser;
public class MainFrame extends javax.swing.JFrame {
/**
* Creates new form MainFrame
*/
public MainFrame() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
*/
@SuppressWarnings("unchecked")
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextField1 = new javax.swing.JTextField();
jComboBox1 = new javax.swing.JComboBox();
jXHyperlink1 = new org.jdesktop.swingx.JXHyperlink();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
jScrollPane1.setViewportView(jTextField1);
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 222222222222222222222222", …Run Code Online (Sandbox Code Playgroud) 我在JTable中有一个列绑定到业务对象列表上的底层布尔属性.我还有一个组合框,应该选择应该选择哪些项目.我基本上将以下代码添加为组合框的处理程序:
macroCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JComboBox comboBox = (JComboBox) e.getSource();
Predicate filter = (Predicate) comboBox.getSelectedItem();
for(SelectableKey key : tableEntries){
key.setSelected(filter.evaluate(key));
}
}
});
Run Code Online (Sandbox Code Playgroud)
我还想根据值改变一些其他控件.目前,表中只有少数单元格会更改其状态以进行选择/取消选择.只有当我单击该行或选择多行时,UI才会自行更新.是否有来自我需要做的处理程序的调用来告诉GUI重绘自己?ALOS,如果我修改除JTable之外的其他控件,我怎么告诉他们改变他们的状态?
谢谢
我想知道当我们输入组合框时如何让JComboBox自动建议元素.例如,如果我使用MySQL加载了一个带有这些名称的JComboBox,[Amila,Nimila,Nikila,Sunil],当我在组合框中输入"N"时,它会下拉列表,只显示Nimila和Nikila为建议.我正在尝试在NetBeans上执行此操作.谢谢.
对不起,这是我第一次参加这个论坛.
谁能帮帮我吗?
我一直试图在JComboBox上一行制作图像和文本节目,在网站上搜索后,我找不到解决问题的方法.
该JLabel的上述JLabel的工作,但是一个JLabel在JComboBox中没有.