簡體   English   中英

使用卡布局進行驗證

[英]validation using card layout

有一個J框架,我在其中放置了2個面板,兩個面板的卡布局

按圖像J框架有2個面板,一個是

面板窗格>>在這里我要調用panel1,panel2,panel3,其中所有3個面板都有一些控件,例如JtextField,jComboBox等。

按鈕窗格>>在此面板中,下一個有一個按鈕,當按下next時有一個按鈕返回(如果面板顯示“ panel1”,則顯示為panel1控件)

像這樣 在此處輸入圖片說明

代碼如下

package Code; /** * * @author Rohini */ import java.awt.*; import javax.swing.*; import java.awt.event.*; public class InvoicePage extends JFrame implements ActionListener{ JLabel newInvoic, invoiceNol, invoiceNo; JButton clinfoNext, payentryNext, termentryNext; JButton clinfoBack, payentryBack, termentryBack; JPanel buttonPane, clinfoBPane, payentryBPane, termentryBPane; JPanel panelpane, client_info, invoice_entry, term_entry; Container c = this.getContentPane(); CardLayout cardmain, cardbutton; Font head = new Font("Times New Roman",Font.BOLD,20); Font subheadb = new Font("Times New Roman",Font.BOLD,14); Font subheadp = new Font("Times New Roman",Font.PLAIN,14); public InvoicePage() throws HeadlessException { super("Thane Bharat Sahakari Bank : New Invoice"); // initialization of variables cardmain = new CardLayout(); cardbutton = new CardLayout(); newInvoic = new JLabel("New Invoice"); invoiceNol = new JLabel("Invoice No"); invoiceNo = new JLabel("DB Value of id"); clinfoNext = new JButton(" Next > > "); payentryNext = new JButton(" Next > > "); termentryNext = new JButton(" Next > > "); clinfoBack = new JButton(" < < Back "); payentryBack = new JButton(" < < Back "); termentryBack = new JButton(" < < Back "); buttonPane = new JPanel(cardbutton); clinfoBPane = new JPanel(null); payentryBPane = new JPanel(null); termentryBPane = new JPanel(null); panelpane = new JPanel(cardmain); client_info = new clientInfo(); invoice_entry = new discription(); term_entry = new termentry(); // setting properties of variabels panelpane.add(client_info,"Client_info"); panelpane.add(invoice_entry,"invoice_entry"); panelpane.add(term_entry,"term_entry"); buttonPane.add(clinfoBPane,"clinfoBpane"); buttonPane.add(payentryBPane,"payentryBPane"); buttonPane.add(termentryBPane,"termentryBPane"); clinfoBPane.add(clinfoBack); clinfoBPane.add(clinfoNext); payentryBPane.add(payentryBack); payentryBPane.add(payentryNext); termentryBPane.add(termentryBack); termentryBPane.add(termentryNext); newInvoic.setFont(head); invoiceNol.setFont(subheadb); invoiceNo.setFont(subheadp); clinfoNext.addActionListener(this); payentryNext.addActionListener(this); termentryNext.addActionListener(this); clinfoBack.addActionListener(this); payentryBack.addActionListener(this); termentryBack.addActionListener(this); // setting Bounds Bounds(0,0); // Adding Components c.add(newInvoic); c.add(invoiceNol); c.add(invoiceNo); c.add(buttonPane); c.add(panelpane); // Form properties cardbutton.show(buttonPane,"clinfoBpane"); cardmain.show(panelpane,"Client_info") ; c.setLayout(null); c.setBackground(Color.WHITE); //clinfoBPane.setBackground(Color.WHITE); this.setResizable(true); this.setVisible(true); setDefaultCloseOperation(3); System.out.println(""); } public void Bounds( int i, int j ){ if(i == 0){ newInvoic.setBounds(250,0,150,30); invoiceNol.setBounds(400,30,100,25); invoiceNo.setBounds(500,30,100,25); buttonPane.setBounds(0,410,610,50); panelpane.setBounds(0,50,610,350); clinfoNext.setBounds(430,5,150,30); clinfoBack.setBounds(25,5,150,30); this.setSize(625,505); this.setLocation(300,150); } else if(i == 1){ newInvoic.setBounds(350,0,150,30); invoiceNol.setBounds(600,30,100,25); invoiceNo.setBounds(700,30,100,25); buttonPane.setBounds(0,440,830,50); panelpane.setBounds(0,50,815,390); if(j == 0){ payentryNext.setBounds(640,5,150,30); payentryBack.setBounds(30,5,150,30); } else if(j == 1){ termentryNext.setBounds(640,5,150,30); termentryBack.setBounds(30,5,150,30); } this.setSize(830,525); this.setLocation(200,100); } else{ } } public void actionPerformed(ActionEvent ae){ if(ae.getSource() == clinfoNext){ cardbutton.show(buttonPane,"payentryBPane"); cardmain.show(panelpane,"invoice_entry") ; Bounds(1,0); } else if(ae.getSource() == clinfoBack){ this.dispose(); Mainfrm mf = new Mainfrm(); mf.setVisible(true); } else if((ae.getSource() == payentryNext)){ Bounds(1,1); cardbutton.show(buttonPane,"termentryBPane"); cardmain.show(panelpane,"term_entry") ; } else if(ae.getSource() == payentryBack){ Bounds(0,0); cardbutton.show(buttonPane,"clinfoBpane"); cardmain.show(panelpane,"Client_info") ; } else if(ae.getSource() == termentryBack){ cardbutton.show(buttonPane,"payentryBPane"); cardmain.show(panelpane,"invoice_entry") ; Bounds(1,0); } else if(ae.getSource() == termentryNext){ JOptionPane.showConfirmDialog(this,"Are you sure that the invoice is over","Confirmation", JOptionPane.YES_NO_CANCEL_OPTION, 0); } else{ } } public static void main(String []avi){ new InvoicePage(); } }

是!! 我得到了答案

實際上,外部面板變量需要具有公共范圍

(請參見上面的代碼)

JPanel panelpane, client_info, invoice_entry, term_entry;

我已經創建了JPanel的實例,並通過外部面板將其初始化,即

   client_info = new clientInfo();
        invoice_entry = new discription();
        term_entry = new termentry();

而不是面板正在做

 JPanel panelpane, client_info, invoice_entry, term_entry;

通過嘗試解決這個問題來解決

  JPanel panelpane;
        clientInfo client_info;
        discription invoice_entry;

這樣我們就可以給actionListner

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM