『壹』 java卡片布局中show的正確使用方法
已修改,復制粘貼即可,
panelMain=newPanel(cl);//被設定為卡片布局的面板
修改如上即可
importjava.awt.BorderLayout;
importjava.awt.Button;
importjava.awt.CardLayout;
importjava.awt.FlowLayout;
importjava.awt.Frame;
importjava.awt.Label;
importjava.awt.Panel;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
publicclassCeshiextendsFrame
{
PanelFpf=newPanelF();
PanelSps=newPanelS();
PanelpanelMain,panelXZ;
ButtonbtNext,btPrevious,bt1,bt2,bt3,bt4,bt5;
CardLayoutcl;
Booleanw=false;
publicCeshi()
{
cl=newCardLayout();
panelMain=newPanel(cl);//被設定為卡片布局的面板
panelXZ=newPanel();//構造放按鈕的面板
btPrevious=newButton("上一頁");
btNext=newButton("下一頁");
bt1=newButton("1");
bt2=newButton("2");
//給定義為卡片布局的面板添加面板
panelMain.add(pf,"pf");
panelMain.add(ps,"ps");
panelXZ.add(btPrevious);
panelXZ.add(btNext);
panelXZ.add(bt1);
panelXZ.add(bt2);
btPrevious.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
cl.previous(panelMain);
}
});
btNext.addActionListener(newActionListener()
{//下一頁的按鈕
publicvoidactionPerformed(ActionEvente)
{
cl.next(panelMain);
}
});
bt1.addActionListener(newActionListener()
{//跳轉到第二個面板的按鈕
publicvoidactionPerformed(ActionEvente)
{
cl.show(panelMain,"pf");
}
});
bt2.addActionListener(newActionListener()
{//跳轉到第二個面板的按鈕
publicvoidactionPerformed(ActionEvente)
{
cl.show(panelMain,"ps");
}
});
addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEventwevent)
{
if(w)
dispose();
else
System.exit(0);
}
});
panelXZ.setLayout(newFlowLayout());
setTitle("主界面");
setSize(800,600);
setLocationRelativeTo(null);
add(panelMain,BorderLayout.CENTER);//把設為卡片布局的面板放置在窗體中間
add(panelXZ,BorderLayout.SOUTH);//把帶按鈕的面板放置在底部
setVisible(true);
}
publicstaticvoidmain(Stringargs[])
{
newCeshi();
}
}
//第一個面板
classPanelFextendsPanel
{
publicPanelF()
{
add(newLabel("第一個面板"));
}
}
//第二個面板
classPanelSextendsPanel
{
publicPanelS()
{
add(newLabel("第二個面板"));
}
}
『貳』 java 卡片布局問題
先添加一個面板,把布局設置成CardLayout然後再向這個面板中添加新的面板。。就可以了。。。然後面板的轉換用按鈕做,給按鈕添加單擊事件。
這是用面板布局做的一個簡單示例,你可以看一下,在JBUilder裡面寫的,可能不能運行。但你可以借鑒一下。
package jiemian;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.CardLayout;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import javax.swing.JRadioButton;
import javax.swing.JSpinner;
import javax.swing.ButtonGroup;
import javax.swing.JComboBox;
import javax.swing.JList;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.SpinnerNumberModel;
import javax.swing.JOptionPane;
import javax.swing.JCheckBox;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Frame2 extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
CardLayout cardLayout1 = new CardLayout();
JPanel jPanel2 = new JPanel();
JPanel jPanel3 = new JPanel();
JPanel jPanel4 = new JPanel();
JLabel jLabel1 = new JLabel();
JTextField jTextField1 = new JTextField();
JLabel jLabel2 = new JLabel();
JPasswordField jPasswordField1 = new JPasswordField();
JButton jButton1 = new JButton();
JLabel jLabel3 = new JLabel();
JLabel jLabel4 = new JLabel();
JRadioButton jRadioButton1 = new JRadioButton();
JRadioButton jRadioButton2 = new JRadioButton();
JSpinner jSpinner1 = new JSpinner(new SpinnerNumberModel(25,18,55,1));
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
ButtonGroup buttonGroup1 = new ButtonGroup();
JLabel jLabel5 = new JLabel();
JLabel jLabel6 = new JLabel();
String[] ye={"學生","教室","工程師","醫生"};
JComboBox jComboBox1 = new JComboBox(ye);
String[] gongzi={"1000以下","1000-2000","2000-3000","3000-5000","5000以上"};
JList jList1 = new JList(gongzi);
JButton jButton4 = new JButton();
JButton jButton5 = new JButton();
JLabel jLabel7 = new JLabel();
JCheckBox jCheckBox1 = new JCheckBox();
JCheckBox jCheckBox2 = new JCheckBox();
JCheckBox jCheckBox3 = new JCheckBox();
JCheckBox jCheckBox4 = new JCheckBox();
public Frame2() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 300));
setTitle("step 1 of 3");
jPanel1.setLayout(cardLayout1);
jPanel2.setLayout(null);
jPanel3.setLayout(null);
jPanel4.setLayout(null);
jLabel1.setText("姓名:");
jLabel1.setBounds(new Rectangle(20, 24, 81, 31));
jTextField1.setBounds(new Rectangle(124, 23, 130, 33));
jLabel2.setText("密碼:");
jLabel2.setBounds(new Rectangle(20, 81, 81, 30));
jPasswordField1.setBounds(new Rectangle(124, 79, 125, 31));
jButton1.setBounds(new Rectangle(126, 151, 100, 34));
jButton1.setText("下一步");
jButton1.addActionListener(new Frame2_jButton1_actionAdapter(this));
jLabel3.setText("性別");
jLabel3.setBounds(new Rectangle(34, 25, 89, 33));
jLabel4.setText("年齡");
jLabel4.setBounds(new Rectangle(34, 99, 89, 32));
jRadioButton1.setText("男");
jRadioButton1.setBounds(new Rectangle(136, 33, 65, 32));
jRadioButton2.setText("女");
jRadioButton2.setBounds(new Rectangle(207, 33, 65, 32));
jSpinner1.setBounds(new Rectangle(133, 96, 125, 36));
jButton2.setBounds(new Rectangle(160, 191, 93, 32));
jButton2.setText("下一步");
jButton2.addActionListener(new Frame2_jButton2_actionAdapter(this));
jButton3.setBounds(new Rectangle(38, 191, 89, 31));
jButton3.setText("上一步");
jButton3.addActionListener(new Frame2_jButton3_actionAdapter(this));
jLabel5.setText("職業");
jLabel5.setBounds(new Rectangle(31, 23, 93, 37));
jLabel6.setText("工資");
jLabel6.setBounds(new Rectangle(30, 61, 93, 33));
jComboBox1.setBounds(new Rectangle(115, 28, 112, 32));
jList1.setSelectedIndex(0);
jList1.setBounds(new Rectangle(113, 70, 112, 93));
jButton4.setBounds(new Rectangle(54, 180, 83, 37));
jButton4.setText("上一步");
jButton4.addActionListener(new Frame2_jButton4_actionAdapter(this));
jButton5.setBounds(new Rectangle(233, 181, 83, 36));
jButton5.setText("提交");
jButton5.addActionListener(new Frame2_jButton5_actionAdapter(this));
jLabel7.setText("愛好");
jLabel7.setBounds(new Rectangle(257, 28, 74, 30));
jCheckBox1.setText("音樂");
jCheckBox1.setBounds(new Rectangle(270, 56, 89, 30));
jCheckBox2.setText("體育");
jCheckBox2.setBounds(new Rectangle(270, 92, 87, 28));
jCheckBox3.setText("計算機");
jCheckBox3.setBounds(new Rectangle(270, 125, 82, 22));
jCheckBox4.setText("英語");
jCheckBox4.setBounds(new Rectangle(270, 153, 88, 24));
contentPane.add(jPanel1, java.awt.BorderLayout.CENTER);
jPanel1.add(jPanel2, "one");
jPanel2.add(jLabel1);
jPanel2.add(jTextField1);
jPanel2.add(jLabel2);
jPanel2.add(jPasswordField1);
jPanel2.add(jButton1);
jPanel1.add(jPanel3, "two");
jPanel3.add(jLabel3);
jPanel3.add(jLabel4);
jPanel3.add(jRadioButton1);
jPanel3.add(jRadioButton2);
jPanel3.add(jSpinner1);
jPanel3.add(jButton2);
jPanel3.add(jButton3);
jPanel4.add(jLabel5);
jPanel4.add(jComboBox1);
jPanel4.add(jList1);
jPanel4.add(jLabel6);
jPanel4.add(jLabel7);
jPanel4.add(jButton4);
jPanel4.add(jButton5);
jPanel4.add(jCheckBox1);
jPanel4.add(jCheckBox2);
jPanel4.add(jCheckBox3);
jPanel4.add(jCheckBox4);
buttonGroup1.add(jRadioButton1);
buttonGroup1.add(jRadioButton2);
jPanel1.add(jPanel4, "three");
}
public void jButton1_actionPerformed(ActionEvent e) {
cardLayout1.show(jPanel1,"two");
setTitle("step 2 of 3");
}
public void jButton3_actionPerformed(ActionEvent e) {
cardLayout1.show(jPanel1,"one");
setTitle("step 1 of 3");
}
public void jButton2_actionPerformed(ActionEvent e) {
cardLayout1.show(jPanel1,"three");//面板的轉換
setTitle("step 3 of 3");
}
public void jButton4_actionPerformed(ActionEvent e) {
cardLayout1.show(jPanel1,"two");
setTitle("step 2 of 3");
}
public void jButton5_actionPerformed(ActionEvent e) {
String xinxi=new String();
xinxi+="姓名: ";
xinxi+=jTextField1.getText()+"\n";
xinxi+="性別: ";
if(jRadioButton1.isSelected()){
xinxi += "男 " + "\n";
if (jRadioButton2.isSelected()) {
xinxi+="女"+"\n";
}
}
xinxi+="年齡: ";
xinxi+=jSpinner1.getValue().toString()+"\n";
xinxi+="工資: ";
xinxi+=jComboBox1.getSelectedItem().toString()+"\n";
xinxi+="職業: ";
xinxi+=jList1.getSelectedValue().toString()+"\n";
xinxi+="愛好: "+"\n";
if(jCheckBox1.isSelected()){
xinxi+=" 音樂"+"\n";
}
if(jCheckBox2.isSelected()){
xinxi+=" 體育"+"\n";
}
if(jCheckBox3.isSelected()){
xinxi+=" 計算機"+"\n";
}
if(jCheckBox4.isSelected()){
xinxi+=" 英語"+"\n";
}
JOptionPane.showMessageDialog(this,xinxi);
}
}
class Frame2_jButton5_actionAdapter implements ActionListener {
private Frame2 adaptee;
Frame2_jButton5_actionAdapter(Frame2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton5_actionPerformed(e);
}
}
class Frame2_jButton4_actionAdapter implements ActionListener {
private Frame2 adaptee;
Frame2_jButton4_actionAdapter(Frame2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton4_actionPerformed(e);
}
}
class Frame2_jButton2_actionAdapter implements ActionListener {
private Frame2 adaptee;
Frame2_jButton2_actionAdapter(Frame2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class Frame2_jButton3_actionAdapter implements ActionListener {
private Frame2 adaptee;
Frame2_jButton3_actionAdapter(Frame2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
class Frame2_jButton1_actionAdapter implements ActionListener {
private Frame2 adaptee;
Frame2_jButton1_actionAdapter(Frame2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
『叄』 JAVA 卡片布局
問題一:
這段代碼中,包含了一個成員變數i和類Cvs的構造方法,請問一下,括弧里的int j是什麼?還有,i與j在之前都沒有聲明或者賦值過,那麼這里的i和j的值又是什麼?為什麼?
答案一:
你的i,j都沒有賦值,但是在用Cvs構造方法時候初始化了
你看
"for(int k=0;k<=9;k++)
{
cvs[k]=new Cvs(k); //在這呢,調用你的 Cvs(int j)構造
pnl.add(""+k,cvs[k]);
}"
這個時候 i,j,k就是一個值了i=j=k了
問題二:
for(int k=0;k<=9;k++)
{
cvs[k]=new Cvs(k);
pnl.add(""+k,cvs[k]);
}
這句話是不是在面板中添加了10個不同的畫布?
答案二:
是的,對的
問題三:
後面的pnl.add(""+k,cvs[k]);為什麼k前面要加一個空字元?
答案三:
你看看 k是個整數對吧,但是add()方法是不能用整數對象的,要轉換成字元串對象,""+k就是相當與把k與一個空的字元串相加,這時候k就變成字元串了,懂吧,書上都有
問題四:
在開頭建立Cvs的類對象時用了數組,是建立類對象么?為什麼要用數組?
答案四:
是滴,用數組可以建立多個對象啊,而且方便.
問題五:
這句話的意義?
答案五:
這句話的意思就是建立10個不同的畫布對象.
『肆』 java 中卡片布局,如何取到某一卡片上所有JTextField上後續寫入的值
JtextField text_x = new JtextField();
string str = text_x.getText();
『伍』 JAVA卡片布局,代碼求糾錯。
public void actionPerformed(ActionEvent event) {
if(event.getSource()==Button1){
// car.next(cards);
car.first(cards);
}else{
car.last(cards);
// car.previous(cards);
}
}
『陸』 java卡片布局show的使用。下面代碼中LayoutDemo中「日記本」按鈕顯示TestFlowLayoutone 代碼
卡片布局裡面,好像只有一個布局。
另外對象的比較,不可以簡單地使用=,要使用對象.equals(object)
代碼是精簡過的,最大的區別在圖片中代碼的30幾行、60幾行,,,,,把內部類,放回到外面,一樣使用的。
『柒』 java 卡片式布局切換
可以切換呢,但前提是,你首先要把你的卡片append到cardlayout中去,
java.awt.CardLayout.addLayoutComponent(Component comp, Object constraints) 將指定的組件添加到此卡片布局的內部名稱表。 這個方法有兩個參數,第一個參數是你的容器,第二個參數,是為卡片起的名字,我一般用String,做好這一步後,再用show方法,來切換