请教一个Swing的小需求的实现方案.

Java_lastbattle 2014-06-30 03:00:56
高手,我弄了一个Swing的Test类,代码如下:
package c_port_packageBJTeacher;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.LinkedList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

/**
* Java中CardLayout布局管理器使用的小例子
*/
public class Test extends JFrame implements ActionListener, Runnable {
/**
*
*/
private static final long serialVersionUID = 1L;
public ArrayList<JTextArea> al = new ArrayList<JTextArea>();
private JPanel pane = null; // 主要的JPanel,该JPanel的布局管理将被设置成CardLayout
private JPanel p = null; // 放按钮的JPanel
private CardLayout card = null; // CardLayout布局管理器
private JButton button_1 = null; // 上一步
private JButton button_2 = null; // 下一步
public LinkedList<JTextArea> ld = new LinkedList<JTextArea>();
String[] title = new String[]{"测试功能1","测试功能2","测试功能3","测试功能4"};
private JLabel lb = null;
private int currenPage = 1;
int o = 0;
private int myLocalPagenum = 0;
Font fnt = new Font("华文中宋", Font.BOLD, 14);
String[] MyJButtonDIYContent = new String[301];
LinkedList<String> ld0 = new LinkedList<String>();

public Test(String str, int pagenum) {
super("测试功能1");
ld0.add("测试功能1");
ld0.add("测试功能2");
ld0.add("测试功能3");
ld0.add("测试功能4");
for(int i =0;i<301;i++){
MyJButtonDIYContent[i]="CJCO";
}
// ////System.out.println(pagenum);
myLocalPagenum = pagenum;
card = new CardLayout(5, 5);
pane = new JPanel(card);
this.setResizable(false);
try {
// 将LookAndFeel设置成Windows样式
// UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception ex) {
ex.printStackTrace();
}
/** 创建一个具有指定的水平和垂直间隙的新卡片布局 */
p = new JPanel(); // 构造放按钮的JPanel
button_1 = new JButton("< 上一页");
button_2 = new JButton("下一页 >");
lb = new JLabel("第1页");
p.add(button_1);
p.add(button_2);
p.add(lb);
button_1.setEnabled(false);
if (myLocalPagenum == 1)
button_2.setEnabled(false);
/** 下面是翻转到卡片布局的某个组件,可参考API中的文档 */
button_1.addActionListener(new ActionListener() { // 上一步的按钮动作
public void actionPerformed(ActionEvent e) {
currenPage--;
o++;
if (currenPage == 1)
button_1.setEnabled(false);
if (currenPage < myLocalPagenum)
button_2.setEnabled(true);
lb.setText("第" + currenPage + "页");
card.previous(pane);
Test.this.setTitle(title[o]);
}
});
button_2.addActionListener(new ActionListener() { // 下一步的按钮动作
public void actionPerformed(ActionEvent e) {
currenPage++;
o--;
if (currenPage == myLocalPagenum)
button_2.setEnabled(false);
if (currenPage > 1)
button_1.setEnabled(true);
lb.setText("第" + currenPage + "页");
card.next(pane);
Test.this.setTitle(title[o]);
}
});
this.getContentPane().add(pane, BorderLayout.NORTH);
this.getContentPane().add(p, BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setSize(332, 722);
JPanel container = new JPanel(new GridLayout(5,10,5,5));
for(int i = 1; i < 51; ++i){
int j =0;
j = i+100;
JButton jb = new JButton("<html>"+MyJButtonDIYContent[i+100]+j+"</html>");
jb.setFont(fnt);
container.add(jb);
}
JPanel container0 = new JPanel(new GridLayout(5,10,5,5));
for(int i = 1; i < 51; ++i){
int j =0;
j = j+150;
JButton jb = new JButton("<html>"+MyJButtonDIYContent[i+150]+j+"</html>");
jb.setFont(fnt);
container0.add(jb);
}
JPanel container1 = new JPanel(new GridLayout(5,10,5,5));
for(int i = 1; i < 51; ++i){
int j =0;
j = i +200;
JButton jb = new JButton("<html>"+MyJButtonDIYContent[i+200]+j+"</html>");
jb.setFont(fnt);
container1.add(jb);
}
JPanel container2 = new JPanel(new GridLayout(5,10,5,5));
for(int i = 1; i < 51; ++i){
int j = 0;
j = i+250;
JButton jb = new JButton("<html>"+MyJButtonDIYContent[i+250]+j+"</html>");
jb.setFont(fnt);
container2.add(jb);
}
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
double width = dim.getWidth();
double height = dim.getHeight();
this.setBounds(new Rectangle(0,0,(int)width,(int)height-40));
pane.add(container,"测试功能1");
pane.add(container0,"测试功能2");
pane.add(container1,"测试功能3");
pane.add(container2,"测试功能4");
this.setVisible(true);
}

public void run() {
this.setVisible(true);
}

public static void main(String[] args) {
String SocketInfo = "";
int pagenum = 4;
Test m0 = new Test(SocketInfo, pagenum);
Thread m1 = new Thread(m0);
m1.start();
}

@Override
public void actionPerformed(ActionEvent e) {

}

}

小弟的需求是“实现出用户点击上一页下一页按钮后”,能够进行“对应页面的展示”,并且能够进行对应的“页面标题”的改变.
小弟现在已经把前面的需求实现了,但是,还不能够进行对应页面标题的改变。
希望高手能够帮小弟看看:
小弟的代码,错在哪里?如何修改?
感谢帮助我的老师,版主,同学,路过的高手!!
有CSDN!!有Java屌丝梦想实现!!!!!
...全文
163 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lliiqiang 2014-06-30
  • 打赏
  • 举报
回复
button_1.addActionListener(new ActionListener() { // 上一步的按钮动作 public void actionPerformed(ActionEvent e) { currenPage--; o--;//减 if (currenPage == 1) button_1.setEnabled(false); if (currenPage < myLocalPagenum) button_2.setEnabled(true); lb.setText("第" + currenPage + "页"); card.previous(pane); Test.this.setTitle(title[o]); } }); button_2.addActionListener(new ActionListener() { // 下一步的按钮动作 public void actionPerformed(ActionEvent e) { currenPage++; o++;//加 if (currenPage == myLocalPagenum) button_2.setEnabled(false); if (currenPage > 1) button_1.setEnabled(true); lb.setText("第" + currenPage + "页"); card.next(pane); Test.this.setTitle(title[o]); } });
  • 打赏
  • 举报
回复
上一步的时候应该是o--下一步是o++,这样逻辑才对。这种简单的逻辑判断细心点就能发现的。
Inhibitory 2014-06-30
  • 打赏
  • 举报
回复
        /** 下面是翻转到卡片布局的某个组件,可参考API中的文档 */
        button_1.addActionListener(new ActionListener() { // 上一步的按钮动作
                    public void actionPerformed(ActionEvent e) {
                        currenPage--;
                        o--; // 这里是不是o++
                        if (currenPage == 1)
                            button_1.setEnabled(false);
                        if (currenPage < myLocalPagenum)
                            button_2.setEnabled(true);
                        lb.setText("第" + currenPage + "页");
                        card.previous(pane);
                        Test.this.setTitle(title[o]);
                        System.out.println(title[o]);
                    }
                });
        button_2.addActionListener(new ActionListener() { // 下一步的按钮动作
                    public void actionPerformed(ActionEvent e) {
                        currenPage++;
                        o++; // 这里是不是o--
                        if (currenPage == myLocalPagenum)
                            button_2.setEnabled(false);
                        if (currenPage > 1)
                            button_1.setEnabled(true);
                        lb.setText("第" + currenPage + "页");
                        card.next(pane);
                        Test.this.setTitle(title[o]);
                        System.out.println(title[o]);
                    }
                });
Java_lastbattle 2014-06-30
  • 打赏
  • 举报
回复
呀呼!!!!!!! 谢谢敬爱的CSDN观世音大仕,CSDN乔布斯的左手,fangmingshijie,公孙二狗,还有新老师,lliiqiang的点拨!!!!! 学生的这个活儿,齐了!!!! : 将军百战南天起,我愿做长风绕战旗,余将以血肉之躯报效国家,舍身家性命以敲代码,誓与技术血战到底!但闻黄河水长啸,不求马革裹尸还! 但愿朝阳常照我土,莫忘代码数据结构,宁我满脸青春豆,也要玩漂亮Java,愿我尸骨所埋便是我华夏根基,愿我热血所抛便是我中华边界.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧