需要在JPanel(Java Swing)

时间:2016-12-25 15:39:32

标签: java swing combobox

我需要使用几个组合框来过滤JTable中的MySQL数据库。我使用了一个组合框,想要使用另一个组合框。 如果有人能帮我弄清楚如何添加一个组合框,我将不胜感激。下面是我的代码与一个组合框;代码是可运行的,但我需要再添加一个组合框,并且找不到正确的决定如何做到这一点。 提前谢谢!

 public void findTours()
    {
   ArrayList<Tour> tours= ListTours((String) jComboBox1.getSelectedItem());
    DefaultTableModel model = new DefaultTableModel();
    model.setColumnIdentifiers (new Object[]{"Tour Type", "Food", "Accomodation", "Name", "Price($)"});
    Object[] row = new Object[5];
    for(int i=0; i< tours.size();i++)
    {
        row[0]=tours.get(i).getTourtype();
        row[1]=tours.get(i).getFood();
        row[2]=tours.get(i).getAccomodation();
        row[3]=tours.get(i).getName();
           row[4]=tours.get(i).getPrice();
        model.addRow(row);

  }
   JTable_Search.setModel(model);
    }

1 个答案:

答案 0 :(得分:2)

  

但我需要再添加一个组合框

您的代码甚至不添加单个组合框,那么发布代码的重点是什么?

您希望在哪里看到这些多个组合框:

  1. 在同一列但不同的行
  2. 在另一栏中
  3. 当你提出问题时要明确,这样我们就不必猜测你在想什么。

    以下是一个示例,说明如何按行添加不同的组合框:

    import java.awt.*;
    import java.util.List;
    import java.util.ArrayList;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    import javax.swing.table.*;
    
    public class TableComboBoxByRow extends JPanel
    {
        List<String[]> editorData = new ArrayList<String[]>(3);
    
        public TableComboBoxByRow()
        {
            setLayout( new BorderLayout() );
    
            // Create the editorData to be used for each row
    
            editorData.add( new String[]{ "Red", "Blue", "Green" } );
            editorData.add( new String[]{ "Circle", "Square", "Triangle" } );
            editorData.add( new String[]{ "Apple", "Orange", "Banana" } );
    
            //  Create the table with default data
    
            Object[][] data =
            {
                {"Color", "Red"},
                {"Shape", "Square"},
                {"Fruit", "Banana"},
                {"Plain", "Text"}
            };
            String[] columnNames = {"Type","Value"};
    
            DefaultTableModel model = new DefaultTableModel(data, columnNames);
            JTable table = new JTable(model)
            {
                //  Determine editor to be used by row
                public TableCellEditor getCellEditor(int row, int column)
                {
                    int modelColumn = convertColumnIndexToModel( column );
    
                    if (modelColumn == 1 && row < 3)
                    {
                        JComboBox<String> comboBox1 = new JComboBox<String>( editorData.get(row));
                        return new DefaultCellEditor( comboBox1 );
                    }
                    else
                        return super.getCellEditor(row, column);
                }
            };
    
            JScrollPane scrollPane = new JScrollPane( table );
            add( scrollPane );
        }
        private static void createAndShowUI()
        {
            JFrame frame = new JFrame("Table Combo Box by Row");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add( new TableComboBoxByRow() );
            frame.setSize(200, 200);
            frame.setLocationByPlatform( true );
            frame.setVisible( true );
        }
    
        public static void main(String[] args)
        {
            EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    createAndShowUI();
                }
            });
        }
    }
    

    如果您希望将其放在其他列中,请阅读How to Use Tables上的Swing教程中的部分以获取示例。

    为所有Swing基础知识保留教程的链接。