Я создал JFrame, и я хочу создать AbstractTableModel для отображения данных из базы данных с помощью dbquery в сером поле.Как отображать данные в AbstractTableModel с помощью java?
Это первый раз, когда я делаю это, и я очень долго боролся, очень надеюсь получить помощь! Спасибо.
JButton btnSubmit = new JButton("Submit");
btnSubmit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
boolean conditionOK = false;
if(chckbxr.isSelected()==false && chckbxr_1.isSelected()==false && chckbxr_2.isSelected()==false && chckbxr_3.isSelected()==false){
JOptionPane.showMessageDialog(frame,"Please select client account");
}
else if(fromDate.getText().equals("")){
JOptionPane.showMessageDialog(frame, "Please enter starting date");
}
else if(toDate.getText().equals("")){
JOptionPane.showMessageDialog(frame, "Please enter end date");
}
else if(Integer.parseInt(fromDate.getText()) > Integer.parseInt(toDate.getText())){
JOptionPane.showMessageDialog(frame, "End date is earlier than starting date");
}
else
conditionOK = true;
if(conditionOK==true){
int fromYear = Integer.parseInt(fromDate.getText().substring(0, 4));
int fromMonth = Integer.parseInt(fromDate.getText().substring(4,6))-1;
int fromDay = Integer.parseInt(fromDate.getText().substring(6,8));
int toYear = Integer.parseInt(toDate.getText().substring(0, 4));
int toMonth = Integer.parseInt(toDate.getText().substring(4,6))-1;
int toDay = Integer.parseInt(toDate.getText().substring(6,8));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd MMM yyyy");
DateFormat formatter;
formatter = new SimpleDateFormat("yyyy-MM-dd");
Calendar convertedToDate = Calendar.getInstance();
convertedToDate.set(toYear,toMonth,toDay);
Calendar convertedFromDate =Calendar.getInstance();
convertedFromDate.set(fromYear,fromMonth,fromDay);
int MonthDifferenceCount = 1;
//calculate months difference
for (MonthDifferenceCount=1; convertedFromDate.compareTo(convertedToDate) <0; MonthDifferenceCount++)
{
convertedFromDate.add(Calendar.MONTH, 1);
convertedFromDate.set(convertedFromDate.DAY_OF_MONTH,convertedFromDate.getActualMaximum(Calendar.DAY_OF_MONTH));
}
convertedToDate.set(toYear,toMonth,toDay);
convertedFromDate.set(fromYear,fromMonth,fromDay);
//DateArray and PreDate Array are used to store date as date format. Shall be use for tradeDate and SetlDate
Date preDateArray[] = new Date[MonthDifferenceCount];
Date DateArray [] = new Date[MonthDifferenceCount];
for (int i=0; i <MonthDifferenceCount; i++)
{
convertedFromDate.add(Calendar.MONTH,-1);
convertedFromDate.set(convertedFromDate.DAY_OF_MONTH,convertedFromDate.getActualMaximum(Calendar.DAY_OF_MONTH));
preDateArray[i] = convertedFromDate.getTime();
try {
preDateArray[i] = (Date)formatter.parse(sdf.format(preDateArray[i]));
} catch (ParseException e1) {
e1.printStackTrace();
}
convertedFromDate.add(Calendar.MONTH, 1);
convertedFromDate.set(convertedFromDate.DAY_OF_MONTH,convertedFromDate.getActualMaximum(Calendar.DAY_OF_MONTH));
DateArray[i] = convertedFromDate.getTime();
try {
DateArray[i] = (Date)formatter.parse(sdf.format(DateArray[i]));
} catch (ParseException e1) {
e1.printStackTrace();
}
convertedFromDate.add(Calendar.MONTH, 1);
}
summaryFromDate = sdf2.format(DateArray[0]);
summaryToDate = sdf2.format(DateArray[DateArray.length-1]);
String DateList[] = new String[MonthDifferenceCount];
String PreDateList[] = new String[MonthDifferenceCount];
for (int i=0; i<DateArray.length; i++)
{
DateList[i] = sdf1.format(DateArray[i]);
PreDateList[i] = sdf1.format(preDateArray[i]);
}
ArrayList<String> cltAccList = new ArrayList<String>();
if(chckbxr.isSelected()==true){
cltAccList.add("10190R");
}
if(chckbxr_1.isSelected()==true){
cltAccList.add("10230R");
}
if(chckbxr_2.isSelected()==true){
cltAccList.add("10280R");
}
if(chckbxr_3.isSelected()==true){
cltAccList.add("10290R");
}
}
}
});
btnSubmit.setBounds(37, 643, 89, 23);
add(btnSubmit);
После представления даты AbstractTableModel должен фактически отображать данные из базы данных.
Таблица Модель:
public class MTableModel {
public static class MyModel extends AbstractTableModel {
private List<Object[]> data;
private List<String> columnNames;
public MyModel(List<String> columnNames, List<Object[]> data) {
super();
this.columnNames = columnNames;
this.data = data;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int column) {
return columnNames.get(column);
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data.get(rowIndex)[columnIndex];
}
}
protected void initUI() {
JFrame frame = new JFrame(MTableModel.class.getSimpleName());
List<String> columns = Arrays.asList("Name", "Gender");
List<Object[]> data = new ArrayList<Object[]>();
for (int i = 0; i < 50; i++) {
Object[] value = new Object[2];
data.add(value);
}
JTable table = new JTable(new MyModel(columns, data));
frame.add(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MTableModel().initUI();
}
});
}
}
работает Колорадо примеры из учебника Oracle - Как использовать таблицы или ResultSetTableModel или TableFromDatabase, голосование для закрытия тоже – mKorbel
Почему бы не опубликовать то, что вы закодировали до сих пор, некоторый код будет оценен, чтобы получить некоторую поддержку – kaya
@kaya Я редактировал свое сообщение. В основном я пытаюсь показать данные, которые произошли за время. У меня уже есть запрос sql для генерации данных. Проблема, с которой я сейчас сталкиваюсь, - создать таблицу и отобразить ее в JFrame. Спасибо за ответ :) –