我有一个小应用程序,通过JPA从MySQL DB生成统计图表.要选择要在统计信息中包含哪些数据库组件,我已安装了2个JComboBox.第一个JComboBox使用Category1的元素填充,第二个JComboBox使用Category2中的元素填充,Category2是Category1的子类别.我想要做的是只使用链接到JComboBox1中的选择的Category2元素填充JComboBox2.
示例:Category1是汽车品牌,Category2是型号; 我希望JComboBox2只显示所选品牌的型号,现在它显示每个品牌的每个可用型号.
我有两个JTable.一个记录中有一定数量的记录JTable.
JTable加载第一个后,我想加载JCheckbox在第二个表中创建的相同数量的数字.
我有这个场景... vl传递方法中的两个表addCheckBox.
private void addCheckBox(JTable procTableSrc, JTable procTableCk){
CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer();
EachRowRenderer rowRenderer = new EachRowRenderer();
int rows = procTableSrc.getRowCount();
DefaultTableModel dm = (DefaultTableModel)procTableCk.getModel();
Object [] data = new Object[][]{{new Boolean(false)},{new Boolean(false)}};
for(int i=1; i <=rows; i++){
rowRenderer.add(i, checkBoxRenderer);
//model.addRow(new Object []{new Boolean(false)});
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我一个代码来实现这一目标.
我无法在java7中删除一个新的类型安全警告.
我定义了以下JCombobox对象
private JComboBox<Integer> combobox_current_year;
Run Code Online (Sandbox Code Playgroud)
和构造函数
combobox_current_year = new JComboBox(options.getList_years().toArray());
Run Code Online (Sandbox Code Playgroud)
Java 7现在给我以下警告:
类型安全:JComboBox类型的表达式需要未经检查的转换以符合JComboBox
将代码更改为
combobox_current_year = new JComboBox<Integer>((Integer[]) options.getList_years().toArray());
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
线程"AWT-EventQueue-0"中的异常java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[Ljava.lang.Integer; 在jamm.gui.FinanzmanagerGui.mainWindow(FinanzmanagerGui.java:123)在jamm.StartJamm $ 1.run(StartJamm.java:43)在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)在java.awt中.EventQueue.dispatchEventImpl(EventQueue.java:705)在java.awt.EventQueue.access $ 000(EventQueue.java:101)在java.awt.EventQueue中$ 3.run(EventQueue.java:666)在java.awt.EventQueue中$ 3 .RUN(EventQueue.java:664)在java.security.AccessController.doPrivileged(本机方法)在java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76)在java.awt.EventQueue.dispatchEvent(EventQueue.java: 675)java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)at java. awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
我有两个文本字段和一个JComboboxes问题是我希望程序检查文本字段中是否输入了"admins"并在JCombobox中选择了管理员,如果这样,程序将向用户显示一个消息框.
我的代码实际上非常简单.我看到了一个简单而类似的代码是从这篇文章.
起初,我有1个组合框.我有一个名为itemStateChanged()的监听器.我加入这个监听器的目的是:" 当用户从其保管箱中点击(选择)一个项目时执行一些代码 ".
Cmb_ItemCategory = new javax.swing.JComboBox();
Cmb_ItemCategory.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Loading..." }));
Cmb_ItemCategory.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
Cmb_ItemCategoryItemStateChanged(evt);
}
});
private void Cmb_ItemCategoryItemStateChanged(java.awt.event.ItemEvent evt) {
if(evt.getStateChange() == java.awt.event.ItemEvent.SELECTED){
System.err.println("Sombody click or change my model content");
}
}
Run Code Online (Sandbox Code Playgroud)
在代码后面,我获取一些数据,然后调用removeAllItems()方法.然后我将新模型(从新数据)设置到其中.
-- at another line of code ---
Cmb_ItemCategory.removeAllItems();
Cmb_ItemCategory.setModel(newModel);
Run Code Online (Sandbox Code Playgroud)
我juz意识到当我执行removeAllItem()方法时调用了我的itemStateChanged().叫了一次.
那么,如何使它只调用一次用户单击(选择)而不是当removeAllItems()调用时?
它类似于这篇文章.但它不是removeItems案例.CMIIW.
嗨,我正在使用一个表,其中两列即仪器和方法.单击一个按钮,我将在每个单元格中添加一行作为编辑器的组合框.此外,那些组合框将具有actionlistener.就像我选择乐器时一样,应该改变方法组合框列表.我只使用两个组合框,每次添加行时我都会实例化它.我的问题是每当我添加一个新行时,现有的行组合都会重新加载最新的值.这意味着,即使我以不同方式实例化它,组合框也是唯一的.动态创建组合框的方法是什么,它应该具有自己的值.在下面发布我的代码供您参考.
addItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
comboInstrument = new CeNComboBox();
comboMethod = new CeNComboBox();
TableColumn instrumentColumn = table.getColumn("Instrument Used");
TableColumn methodColumn = table.getColumn("Method Title");
comboInstrument.removeAllItems();
listInstruments = analyticalUtil.getInstruments(listAnalysisSummaryPrefs);
iterateInstruments = listInstruments.iterator();
while(iterateInstruments.hasNext()){
comboInstrument.addItem(iterateInstruments.next());
}
dtm.addRow(new Object[]{" "," "});
comboInstrument.setEditable(true);
instrumentColumn.setCellEditor(new MyComboBoxEditor(comboInstrument));
instrumentColumn.setCellRenderer(new MyComboBoxRenderer());
comboMethod.setEditable(true);
methodColumn.setCellEditor(new MyComboBoxEditor(comboMethod));
methodColumn.setCellRenderer(new MyComboBoxRenderer());
comboInstrument.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent argEvent){
comboInstrumentActionPerformed();
}
});
comboMethod.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent argEvent){
comboMethodActionPerformed();
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
MyComboBoxEditor.java
public class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(JComboBox …Run Code Online (Sandbox Code Playgroud) 请查看以下3组课程.请注意,仅显示相关代码,而其余大部分代码将被删除.
CommonGUI.java
package normal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.swing.*;
import javax.swing.text.AbstractDocument;
public class CommonGUI extends JPanel
{
protected JLabel name, mobileNumber1, mobileNumber2, address, landNumber1, landNumber2, nickName, email, category;
protected JTextField nameTxt, mobileNumber1Txt, mobileNumber2Txt, landNumber1Txt, landNumber2Txt, nickNameTxt, emailTxt, categoryTxt;
protected JTextArea addressTxt;
protected JScrollPane scroll;
protected JComboBox categoryCombo;
public CommonGUI()
{
//Intializing the instance variables
name = new JLabel("Name: ");
mobileNumber1 = new JLabel("Mobile Number 1:");
mobileNumber2 = new JLabel("Mobile Number 2: ");
address = new …Run Code Online (Sandbox Code Playgroud) 我有JComboBox2列,我有JButton.单击时JButton,我需要分别JComboBox从第一列和第二列中获取所选值的结果...
我怎么这样?
另外:如何设置JComboBox的标头?
代码:
public class Combo extends JFrame implements ActionListener{
private JComboBox combo = new JComboBox();
private JButton button = new JButton();
public Combo() {
setLayout(new FlowLayout());
combo.setRenderer(new render());
add(combo);
combo.addItem(new String[] {"1","bbb"});
combo.addItem(new String[] {"2","ff"});
combo.addItem(new String[] {"3","gg"});
combo.addItem(new String[] {"4","ee"});
add(button);
button.addActionListener(this);
pack();
}
public static void main(String[]args){
new Combo().setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button){
System.out.println(combo.getSelectedItem());
}
}
}
class render extends JPanel implements ListCellRenderer{
private …Run Code Online (Sandbox Code Playgroud) public class TablePanel extends JPanel implements ActionListener,Serializable
{
JTable m_table;
JComboBox combo,combo1;
DefaultTableModel model=new DefaultTableModel();
DefaultComboBoxModel model1=new DefaultComboBoxModel();
DefaultComboBoxModel model2=new DefaultComboBoxModel();
List<String> field;
List<String> attrCode;
TablePanel()
{
m_table=new JTable(model);
m_table.setBackground(Color.WHITE);
model.addColumn("col1");
model.addColumn("col2");
model.addColumn("col3");
model.addColumn("col4");
model.addColumn("col5");
model.addColumn("col6");
JScrollPane scrollpane=new JScrollPane(m_table);
scrollpane.setBackground(Color.WHITE);
Dimension d = m_table.getPreferredSize();
scrollpane.setPreferredSize(
new Dimension(d.width,m_table.getRowHeight()*15+1));
add(scrollpane);
}
attrCode = service.getAllAttributes(value);
combo1=new JComboBox(model2);
model1.addElement(attrCode.get(0));
model1.addElement(attrCode.get(1));
model1.addElement(attrCode.get(2));
model1.addElement(attrCode.get(3));
model1.addElement(attrCode.get(4));
model1.addElement(attrCode.get(5));
model1.addElement(attrCode.get(6));
col=m_table.getColumnModel().getColumn(0);
col.setCellEditor((new DefaultCellEditor(combo1)));
combo2=new JComboBox(model3);
model3.addElement(trans.get(0));
model3.addElement(trans.get(1));
model3.addElement(trans.get(2));
model3.addElement(trans.get(3));
model3.addElement(trans.get(4));
col=m_table.getColumnModel().getColumn(2);
col.setCellEditor((new DefaultCellEditor(combo2)));} }
Run Code Online (Sandbox Code Playgroud)
我有一张桌子,表格中有一些栏目.现在我想要做的两个列是组合框,当用户从column1组合框中选择一些值时,根据用户选择的值,应该填充组合框2.例如,如果用户从column1组合框中选择value1,则column2组合框将仅显示对应于value1的值.
我试图通过扩展BasicComboBoxUI类来改变JComboBox组件的外观.问题是当我使用扩展的MyComboBoxUI类时,组合框停止正常运行.
这个SSCCE正在证明我的问题.第一个组合框显示第二个组合框的选定项目,第一个组合框没有绘制箭头按钮,并且无法选择项目.
注意:我以这种方式更改JButton组件没有问题.
主要课程:
import javax.swing.JFrame;
import javax.swing.UIManager;
public class Main {
public static void main(String[] args) {
UIManager.put("ComboBoxUI", "MyComboBoxUI");
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
ContentPane contentPane = new ContentPane();
frame.setContentPane(contentPane);
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
ContenPane类:
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JPanel;
public class ContentPane extends JPanel {
public ContentPane() {
setLayout(new FlowLayout());
JComboBox<String> firstComboBox = new JComboBox<>();
firstComboBox.addItem("firstComboBox - 1. item");
firstComboBox.addItem("firstComboBox - 2. item");
firstComboBox.addItem("firstComboBox - 3. …Run Code Online (Sandbox Code Playgroud)