我正在尝试结合2个jcombobox。1个组合框用于显示费用类别。第二个组合框正在从文本文件读取文件以显示产品类型。如果我更改第一个组合框,我希望第二个组合框将根据用户在第一个组合框中的选择进行更改。
我是否仍有可能从文本文件加载其他组合框?该子项将不是Arrays,而是与以前相同,因为它位于cboperson代码的底部。
编辑的代码:
private JComboBox cboCategory;
private JComboBox cboPerson;
private JComboBox cboItem;
public String itemChange = "groceries.txt";
public ExpenditureTracker() {......
String[] items = {"Select Item", "Groceries", "Bills", "Travelling", "Leasure", "Other"};
mainComboBox = new JComboBox(items);
mainComboBox.addActionListener(this);
mainComboBox.addItemListener(this);
//prevent action events from being fired when the up/down arrow keys are used
//mainComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
mainComboBox.setBounds(113, 138, 85, 20);
importPanel.add(mainComboBox);
subComboBox = new JComboBox();// Create sub combo box with multiple models
subComboBox.setPrototypeDisplayValue("XXXXXXXXXX"); // JDK1.4
subComboBox.addItemListener(this);
subComboBox.setBounds(113, 188, 85, 20);
importPanel.add(subComboBox);
String[] subItems1 = {"Select Color", "Red", "Blue", "Green"};
subItems.put(items[1], subItems1);
String[] subItems2 = {"Select Shape", "Circle", "Square", "Triangle"};
subItems.put(items[2], subItems2);
String[] subItems3 = {"Select Fruit", "Apple", "Orange", "Banana"};
subItems.put(items[3], subItems3);
String[] subItems4 = {"Select Fruit", "Apple", "Orange", "Banana"};
subItems.put(items[4], subItems3);
String[] subItems5 = {"Select Fruit", "Apple", "Orange", "Banana"};
subItems.put(items[5], subItems3);
loadDataTocboPerson();
}
private void loadDataToCboPerson() {
Scanner fileReader = new Scanner(getClass().getResourceAsStream(
itemChange));
try {
DefaultComboBoxModel model = new DefaultComboBoxModel();
while (fileReader.hasNextLine()) {
model.addElement(fileReader.nextLine());
}
cboItem.setModel(model);
} finally {
fileReader.close();
}
}
例如
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class ComboBoxTwo extends JFrame implements ActionListener, ItemListener {
private static final long serialVersionUID = 1L;
private JComboBox mainComboBox;
private JComboBox subComboBox;
private Hashtable<Object, Object> subItems = new Hashtable<Object, Object>();
public ComboBoxTwo() {
String[] items = {"Select Item", "Color", "Shape", "Fruit"};
mainComboBox = new JComboBox(items);
mainComboBox.addActionListener(this);
mainComboBox.addItemListener(this);
//prevent action events from being fired when the up/down arrow keys are used
//mainComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
getContentPane().add(mainComboBox, BorderLayout.WEST);
subComboBox = new JComboBox();// Create sub combo box with multiple models
subComboBox.setPrototypeDisplayValue("XXXXXXXXXX"); // JDK1.4
subComboBox.addItemListener(this);
getContentPane().add(subComboBox, BorderLayout.EAST);
String[] subItems1 = {"Select Color", "Red", "Blue", "Green"};
subItems.put(items[1], subItems1);
String[] subItems2 = {"Select Shape", "Circle", "Square", "Triangle"};
subItems.put(items[2], subItems2);
String[] subItems3 = {"Select Fruit", "Apple", "Orange", "Banana"};
subItems.put(items[3], subItems3);
// mainComboBox.setSelectedIndex(1);
}
@Override
public void actionPerformed(ActionEvent e) {
String item = (String) mainComboBox.getSelectedItem();
Object o = subItems.get(item);
if (o == null) {
subComboBox.setModel(new DefaultComboBoxModel());
} else {
subComboBox.setModel(new DefaultComboBoxModel((String[]) o));
}
}
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
if (e.getSource() == mainComboBox) {
if (mainComboBox.getSelectedIndex() != 0) {
FirstDialog firstDialog = new FirstDialog(ComboBoxTwo.this,
mainComboBox.getSelectedItem().toString(), "Please wait, Searching for ..... ");
}
}
}
}
private class FirstDialog extends JDialog {
private static final long serialVersionUID = 1L;
FirstDialog(final Frame parent, String winTitle, String msgString) {
super(parent, winTitle);
setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
JLabel myLabel = new JLabel(msgString);
JButton bNext = new JButton("Stop Processes");
add(myLabel, BorderLayout.CENTER);
add(bNext, BorderLayout.SOUTH);
bNext.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
setVisible(false);
}
});
javax.swing.Timer t = new javax.swing.Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});
t.setRepeats(false);
t.start();
setLocationRelativeTo(parent);
setSize(new Dimension(400, 100));
setVisible(true);
}
}
public static void main(String[] args) {
JFrame frame = new ComboBoxTwo();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
问题内容: 我正在从数据库中成功获取数据值。我也将它们存储到一个数组中。我需要将String数组作为项的加载,以响应执行的关键操作。每当获取按键值时,如何获取按键值,就如何重新加载项目。相反,我需要动态刷新项目。 问题答案:
问题内容: 我是java的新手,我被困在这里…我要做的是将一个java文件中arraylist的更改更新为另一个文件中的JPanel。我正在对arraylist进行排序,因此无法手动完成。有什么办法可以让我“告诉” JPanel痛楚吗? 我有进行排序(工作)的BubbleSort.java,有包含JPanel和JFrame类(用于显示未排序的直方图的工作)的Animation.java。 这是家庭
我目前有两个WebViews(例如leftWebView和rightWebView)位于嵌入在Anchor窗格内的水平SplitPane中。每个WebView都有一个JavaScript(创建一个不同颜色的矩形)。现在我要做的是,在单击一个矩形时,我希望更改另一个WebView。问这个问题的一个简单方法是如何通过更改RightWebView调用leftWebView。 我的应用程序的UI如下所示:
老友记.我有两个DIVS。在一个div中,我有几个列表项“li”。我想做的是,每次我悬停在div 1的li上时,我想改变div 2的背景颜色。为此我需要使用css。谢谢. 你好 null 所以我想要的是,当悬停在id为“red”的li上时,将类为“contents”的div的背景颜色更改为红色。使用CSS。这是我的全部Html文件。
我试图用Python复制我的Stata代码,我被指向熊猫的方向。然而,我很难思考如何处理数据。 假设我想遍历列标题“ID”中的所有值。如果该ID与一个特定的数字匹配,那么我想更改两个相应的值FirstName和LastName。 在Stata,它看起来像这样: 因此,这将替换 FirstName 中与 ID == 103 到 Matt 的值对应的所有值。 在熊猫身上,我正在尝试这样的东西 不知道该
问题内容: 基本上是弹出用于JComboBox中显示其衍生的JTextField下面,如何从怒吼取向为JcomboBox的弹出改变方向并在顶/显示JcomboBox的弹出超过该 编辑:基本JComboBox的代码示例 编辑第二。MacOX的代码 问题答案: 尝试在“ 组合框弹出”中找到的setPopupAbove()方法。