我需要使用几个组合框来过滤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);
}
答案 0 :(得分:2)
但我需要再添加一个组合框
您的代码甚至不添加单个组合框,那么发布代码的重点是什么?
您希望在哪里看到这些多个组合框:
当你提出问题时要明确,这样我们就不必猜测你在想什么。
以下是一个示例,说明如何按行添加不同的组合框:
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基础知识保留教程的链接。