[英]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.