DefaultTableModel中的data数组值变化了,怎么更新JTable这个视图。
JTable使用了DefaultTableModel,DefaultTableModel,又使用了一个Sting[][]做data,现在Sting[][]的值变化了,JTable的显示似乎没有变化,该怎么办?
JTable使用了DefaultTableModel,DefaultTableModel,又使用了一个Sting[][]做data,现在Sting[][]的值变化了,JTable的显示似乎没有变化,该怎么办?
解决方案 »
- JMF怎么实现视频和声音文件格式的转换
- 想请问我这样的人要刻苦学习JAVA语言,要多长时间能参加工作?
- 函数里的循环,当执行第2遍的时候就跳出循环体了.
- 求助,如何的出两个时间之间相差多少个月????
- java如何得到本地多个IP中的外部IP
- 有哪位XDJM对applet有研究的帮帮忙,散分了。。
- Defaut Modifier和protected modifer 是否相同?
- 请教一个关于面板布局方面的问题!
- 两个long型或double型大数字相加,怎么防止结果溢出?
- 各位高手,请问如何在javascript里连接数据库??
- 利用线程技术来制作动画
- 问一个replaceAll替换的问题,在线等!
JTable.getModel().fireTableDataChanged();
JTable.getModel().fireTableStructureChanged();
String[] cols = { "Col1", "Col2" };
JTable table = new JTable(rows, cols);......
然后加了个按钮触发事件:public void actionPerformed(ActionEvent ae) {
if (e.getSource().equals(button)) {
rows[0][0] = "row1 changed";
cols[1] = "col1 changed";
((AbstractTableModel)table.getModel()).fireTableDataChanged();
((AbstractTableModel)table.getModel()).fireTableStructureChanged();
}
}点按钮后,表头和内容都变了
package com.pass86.mypackage;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.ComponentOrientation;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import java.lang.Integer;
import java.util.Calendar;
import java.awt.event.KeyEvent;
import java.awt.Rectangle;@SuppressWarnings("serial")
public class LoanFrame extends JFrame implements ActionListener, ItemListener { private String[] Headers = { "期次", "本金金额", "月还金额", "月还利息", "月还本息" }; private String[][] CellData = {{"", "", "", "", ""}}; private DefaultTableModel DataModel; private int Months; private JPanel MainPanel = null; private JButton CalButton = null; private JLabel jLabel = null; private JLabel jLabel1 = null; private JTextField AmountTextField = null; private JLabel jLabel2 = null; /**
* This method initializes
*
*/
public LoanFrame() {
super();
initialize();
} private JTextField RateTextField = null; private JLabel jLabel3 = null; private JLabel jLabel4 = null; private JLabel jLabel5 = null; private JLabel jLabel6 = null; private JScrollPane jScrollPane = null; private JTable ResultTable = null; private JSpinner YearsSpinner = null; private JSpinner MonthsSpinner = null; private JLabel jLabel51 = null; private JSpinner StartYearSpinner = null; private JSpinner StartMonthSpinner = null; private JLabel jLabel52 = null; private JLabel jLabel53 = null; /**
* This method initializes this
*
*/
private void initialize() {
this.setSize(new Dimension(469, 417));
this.setContentPane(getMainPanel());
this.setLocation(new Point(300, 110));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setTitle("银行贷款还本付息的计算");
this.setVisible(true); } /**
* This method initializes MainPanel
*
* @return javax.swing.JPanel
*/
private JPanel getMainPanel() {
if (MainPanel == null) {
jLabel53 = new JLabel();
jLabel53.setText("月");
jLabel53.setBounds(new Rectangle(345, 40, 13, 18));
jLabel52 = new JLabel();
jLabel52.setText("\u5e74");
jLabel52.setBounds(new Rectangle(289, 40, 13, 18));
jLabel51 = new JLabel();
jLabel51.setText("月");
jLabel51.setBounds(new Rectangle(159, 40, 13, 18));
jLabel6 = new JLabel();
jLabel6.setText("起始时间");
jLabel6.setBounds(new Rectangle(177, 40, 52, 18));
jLabel6.setDisplayedMnemonic(KeyEvent.VK_UNDEFINED);
jLabel5 = new JLabel();
jLabel5.setText("年");
jLabel5.setBounds(new Rectangle(103, 40, 13, 18));
jLabel4 = new JLabel();
jLabel4.setText("贷款期限");
jLabel4.setBounds(new Rectangle(5, 40, 52, 18));
jLabel3 = new JLabel();
jLabel3.setText("%/月");
jLabel3.setBounds(new Rectangle(331, 10, 25, 18));
jLabel2 = new JLabel();
jLabel2.setText("贷款利率");
jLabel2.setBounds(new Rectangle(177, 10, 52, 18));
jLabel1 = new JLabel();
jLabel1.setText("元");
jLabel1.setBounds(new Rectangle(159, 10, 13, 18));
jLabel = new JLabel();
jLabel.setText("贷款金额");
jLabel.setBounds(new Rectangle(5, 10, 52, 18));
MainPanel = new JPanel();
MainPanel.setLayout(null);
MainPanel.setComponentOrientation(ComponentOrientation.UNKNOWN);
MainPanel.add(jLabel, null);
MainPanel.add(getAmountTextField(), null);
MainPanel.add(jLabel1, null);
MainPanel.add(jLabel2, null);
MainPanel.add(getRateTextField(), null);
MainPanel.add(jLabel3, null);
MainPanel.add(getCalButton(), null);
MainPanel.add(jLabel4, null);
MainPanel.add(getYearsSpinner(), null);
MainPanel.add(jLabel5, null);
MainPanel.add(getMonthsSpinner(), null);
MainPanel.add(jLabel51, null);
MainPanel.add(jLabel6, null);
MainPanel.add(getStartYearSpinner(), null);
MainPanel.add(jLabel52, null);
MainPanel.add(getStartMonthSpinner(), null);
MainPanel.add(jLabel53, null);
MainPanel.add(getJScrollPane(), null);
}
return MainPanel;
}
* This method initializes CalButton
*
* @return javax.swing.JButton
*/
private JButton getCalButton() {
if (CalButton == null) {
CalButton = new JButton();
CalButton.setText("计算");
CalButton.setBounds(new Rectangle(373, 7, 78, 28));
CalButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed()
Months += Integer.parseInt(getYearsSpinner().getValue()
.toString()) * 12;
Months += Integer.parseInt(getMonthsSpinner().getValue()
.toString());
CellData = new String[Months][5];
for (int i = 0; i < Months; i++) {
for (int j = 0; j < 5; j++) {
CellData[i][j] = "[";
CellData[i][j] += new String(String.valueOf(i));
CellData[i][j] += ", ";
CellData[i][j] += new String(String.valueOf(j));
CellData[i][j] += "]";
CellData[i][j] += "\t";
System.out.print(CellData[i][j]);
}
System.out.println();
}
// getResultTable().updateUI();
// DataModel.fireTableDataChanged();
((AbstractTableModel)getResultTable().getModel()).fireTableDataChanged();
Months = 0;
}
});
}
return CalButton;
} /**
* This method initializes AmountTextField
*
* @return javax.swing.JTextField
*/
private JTextField getAmountTextField() {
if (AmountTextField == null) {
AmountTextField = new JTextField();
AmountTextField.setColumns(8);
AmountTextField.setBounds(new Rectangle(62, 8, 92, 22));
AmountTextField
.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
return AmountTextField;
} /**
* This method initializes RateTextField
*
* @return javax.swing.JTextField
*/
private JTextField getRateTextField() {
if (RateTextField == null) {
RateTextField = new JTextField();
RateTextField.setColumns(8);
RateTextField.setBounds(new Rectangle(234, 8, 92, 22));
RateTextField
.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
return RateTextField;
} /**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setPreferredSize(new Dimension(350, 200));
jScrollPane.setBounds(new Rectangle(5, 65, 350, 300));
jScrollPane.setViewportView(getResultTable());
}
return jScrollPane;
} /**
* This method initializes ResultTable
*
* @return javax.swing.JTable
*/
private JTable getResultTable() {
if (ResultTable == null) {
// Months = 5;
// CellData = new String[Months][5];
// for (int i = 0; i < 5; i++) {
// for (int j = 0; j < 5; j++) {
// CellData[i][j] = "[";
// CellData[i][j] += new String(String.valueOf(i));
// CellData[i][j] += ", ";
// CellData[i][j] += new String(String.valueOf(j));
// CellData[i][j] += "]";
// CellData[i][j] += "\t";
// System.out.print(CellData[i][j]);
// }
// System.out.println();
// }
DataModel = new DefaultTableModel(CellData, Headers);
ResultTable = new JTable(DataModel) {
public boolean isCellEditable(int nRow, int nCol) {
return false;
}
};
// ResultTable = new JTable(CellData, Headers);
}
return ResultTable;
} /**
* This method initializes YearsSpinner
*
* @return javax.swing.JSpinner
*/
private JSpinner getYearsSpinner() {
if (YearsSpinner == null) {
SpinnerNumberModel spinnerNumberModel = new SpinnerNumberModel();
spinnerNumberModel.setStepSize(new Integer(1));
spinnerNumberModel.setMinimum(new Integer(0));
spinnerNumberModel.setMaximum(new Integer(99));
YearsSpinner = new JSpinner();
YearsSpinner.setPreferredSize(new Dimension(36, 22));
YearsSpinner.setBounds(new Rectangle(62, 38, 36, 22));
YearsSpinner.setModel(spinnerNumberModel);
}
return YearsSpinner;
} /**
* This method initializes MonthsSpinner
*
* @return javax.swing.JSpinner
*/
private JSpinner getMonthsSpinner() {
if (MonthsSpinner == null) {
SpinnerNumberModel spinnerNumberModel = new SpinnerNumberModel();
spinnerNumberModel.setStepSize(new Integer(1));
spinnerNumberModel.setMinimum(new Integer(0));
spinnerNumberModel.setMaximum(new Integer(11));
MonthsSpinner = new JSpinner();
MonthsSpinner.setPreferredSize(new Dimension(33, 22));
MonthsSpinner.setBounds(new Rectangle(121, 38, 33, 22));
MonthsSpinner.setModel(spinnerNumberModel); }
return MonthsSpinner;
} /**
* This method initializes StartYearSpinner
*
* @return javax.swing.JSpinner
*/
private JSpinner getStartYearSpinner() {
if (StartYearSpinner == null) {
SpinnerNumberModel spinnerNumberModel3 = new SpinnerNumberModel();
spinnerNumberModel3.setMaximum(new Integer(9999));
spinnerNumberModel3.setMinimum(new Integer(1000));
spinnerNumberModel3.setValue(new Integer((Calendar.getInstance()
.get(Calendar.YEAR))));
spinnerNumberModel3.setStepSize(new Integer(1));
StartYearSpinner = new JSpinner();
StartYearSpinner.setPreferredSize(new Dimension(50, 22));
StartYearSpinner.setBounds(new Rectangle(234, 38, 50, 22));
StartYearSpinner.setModel(spinnerNumberModel3);
}
return StartYearSpinner;
} /**
* This method initializes StartMonthSpinner
*
* @return javax.swing.JSpinner
*/
private JSpinner getStartMonthSpinner() {
if (StartMonthSpinner == null) {
SpinnerNumberModel spinnerNumberModel4 = new SpinnerNumberModel();
spinnerNumberModel4.setMaximum(new Integer(12));
spinnerNumberModel4.setStepSize(new Integer(1));
spinnerNumberModel4.setValue(new Integer((Calendar.getInstance()
.get(Calendar.MONTH))) + 1);
spinnerNumberModel4.setMinimum(new Integer(1));
StartMonthSpinner = new JSpinner();
StartMonthSpinner.setPreferredSize(new Dimension(33, 22));
StartMonthSpinner.setBounds(new Rectangle(307, 38, 33, 22));
StartMonthSpinner.setModel(spinnerNumberModel4);
}
return StartMonthSpinner;
} public static void main(String args[]) {
new LoanFrame();
} public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成方法存根 } public void itemStateChanged(ItemEvent arg0) {
// TODO 自动生成方法存根 }} // @jve:decl-index=0:visual-constraint="-95,-54"
getCalButton()中命令事件调用了((AbstractTableModel)getResultTable().getModel()).fireTableDataChanged();
没有反应。
我慢慢摸索吧。