Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTable的问题以及关于授权和身份验证的问题_Java_Swing_Authentication_Jtable - Fatal编程技术网

Java JTable的问题以及关于授权和身份验证的问题

Java JTable的问题以及关于授权和身份验证的问题,java,swing,authentication,jtable,Java,Swing,Authentication,Jtable,我正在编写简单的Swing应用程序。我无法理解为什么不显示列名?这是我的密码: public class HistoryFrame extends JFrame{ public JTable tbProducts=new JTable(); public JButton makePayButton; public JPanel panel; public PaymentServiceInterface paymentService=new PaymentService(); public

我正在编写简单的Swing应用程序。我无法理解为什么不显示列名?这是我的密码:

public class HistoryFrame extends JFrame{
public JTable tbProducts=new JTable();
public JButton makePayButton;
public JPanel panel;
    public PaymentServiceInterface paymentService=new PaymentService();
public HistoryFrame(){
    setTitle("History of Payments");
    setSize(500,500);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    panel=new JPanel();
    this.add(panel);
    DisplayData(paymentService.getData());
    ActionListener makePayAction=new PayAction(); 
    addRegUserButton("Make Payment",makePayAction);
    setVisible(true); 
}
public JButton addRegUserButton(String label, ActionListener listener){
    makePayButton=new JButton(label);
    makePayButton.addActionListener(listener);
    panel.add(makePayButton);
    return makePayButton;
}
private void DisplayData(List<Payment> objectList) {

    DefaultTableModel aModel = new DefaultTableModel() {
    //setting the jtable read only

    @Override
    public boolean isCellEditable(int row, int column) {
    return false;
    }
    };
    //setting the column name
    Object[] tableColumnNames = new Object[3];
    tableColumnNames[0]="User";
    tableColumnNames[1] ="Payment";
    tableColumnNames[2]="Date";

    aModel.setColumnIdentifiers(tableColumnNames);
    if (objectList == null) {
    this.tbProducts.setModel(aModel);
    return;
    }
    Object[] objects = new Object[3];
    ListIterator<Payment> lstrg = objectList.listIterator();
    //populating the tablemodel
    while (lstrg.hasNext()) {
    Payment p = lstrg.next();                                         
    objects[0]=p.getUser().getName();
    objects[1]=p.getPayment();
    objects[2]=p.getDate();
    aModel.addRow(objects);
    }
    //binding the jtable to the model
    this.tbProducts.setModel(aModel);
    panel.add(tbProducts);
}
公共类HistoryFrame扩展了JFrame{
公共JTable tbProducts=新JTable();
公共JButton makePayButton;
公共JPanel小组;
public PaymentServiceInterface paymentService=新的paymentService();
公共历史框架(){
setTitle(“付款历史”);
设置大小(500500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel=新的JPanel();
本条添加(面板);
DisplayData(paymentService.getData());
ActionListener makePayAction=新建PayAction();
addRegUserButton(“付款”,makePayAction);
setVisible(真);
}
公共JButton addRegUserButton(字符串标签,ActionListener侦听器){
makePayButton=新的JButton(标签);
makePayButton.addActionListener(监听器);
panel.add(makepay按钮);
返回按钮;
}
私有void显示数据(列表对象列表){
DefaultTableModel aModel=新的DefaultTableModel(){
//将jtable设置为只读
@凌驾
公共布尔值可编辑(int行,int列){
返回false;
}
};
//设置列名
Object[]tableColumnNames=新对象[3];
tableColumnNames[0]=“用户”;
tableColumnNames[1]=“付款”;
tableColumnNames[2]=“日期”;
aModel.setColumnIdentifiers(tableColumnNames);
if(objectList==null){
这个.tbProducts.setModel(aModel);
返回;
}
Object[]objects=新对象[3];
ListIterator lstrg=objectList.ListIterator();
//填充表格模型
while(lstrg.hasNext()){
付款p=lstrg.next();
对象[0]=p.getUser().getName();
objects[1]=p.getPayment();
objects[2]=p.getDate();
aModel.addRow(对象);
}
//将jtable绑定到模型
这个.tbProducts.setModel(aModel);
面板。添加(待定产品);
}

我想知道如何在swing应用程序中提供用户授权和身份验证?类似于在web应用程序中,当存在会话时,我将其放入其中,例如,用户名,我可以在任何地方获取它。在该应用程序中,任务之一是提供注册用户付款,但我如何在登录后获取他的姓名?

将您的JTable放入JScrollPane是获得列标题良好显示的最简单方法。如果您还没有这样做,则需要浏览Oracle Swing教程JTable部分:

此外,您似乎已经询问了用户授权等问题,并在此处收到了接受的答案: