2013-02-23 123 views
0

有一個一名的J的框架,其中我已經把2個面板&卡布局由具有2塊板一個影像j幀驗證使用卡布局

給予兩個面板是

面板窗格> >如果我的打算叫PANEL1,是Panel2,其中·Panel3中所有的3塊板有樣的JTextField,JComboBox的等

按鈕面板>>在此的一些控制面板被按下時旁邊有按鈕旁邊&回(如果面板窗格顯示panel1然後)panel1控件得到驗證

像等enter image description here

代碼如下

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(); } }
+1

參見[*驗證輸入*](HTTP GET解決

JPanel panelpane; clientInfo client_info; discription invoice_entry; 

://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html#inputVerification)並編輯你的問題以包含一個[sscce](http://sscce.org/),它顯示你遇到的任何問題。 – trashgod 2013-02-23 06:15:25

+0

先生我知道如何驗證控件,但我想通過使用卡布局在獨立的類創建的面板解決方案 – 2013-02-23 07:01:50

+0

編輯您的問題,以澄清這一點。這個[示例](http://stackoverflow.com/a/5655843/230513)添加了_same_類的幾個實例;你可以用它作爲你的[sscce]的基礎(http://sscce.org/)。 – trashgod 2013-02-23 07:06:47

回答

1

是!我得到了外面板變量必須有一個公共的範圍

&

(見上面的代碼)

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; 

通過這一點,我們可以能夠給actionListner