swing 页面跳转 下一步怎么显示新页面

martin_zhou 2010-07-19 05:10:51

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class NewJFrame extends JFrame{
private JFileChooser chooser;
private JTextField testfield;
JPanel card;
public NewJFrame(){
this.setTitle("aaa");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
createPanel(this.getContentPane());
}

private void createPanel(Container pane){

card = new JPanel();
JButton button0 = new JButton("xxxxxxxxx");
card.add(button0);


JPanel card2 = new JPanel();
testfield = new JTextField("",20);

card2.add(testfield);

JButton button = new JButton("选择文件目录");
button.addActionListener(new CreateAdd_field_actionAdapter(this));
card2.add(button);

JButton button2 = new JButton("下一步");
button2.addActionListener(new CreateAdd_next_actionAdapter(this));
card2.add(button2);
pane.add(card2);
}


void field_actionPerformed(ActionEvent e){

chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle("");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//
// disable the "All files" option.
//
chooser.setAcceptAllFileFilterUsed(false);
//
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
testfield.setText(chooser.getSelectedFile().toString());
System.out.println("getCurrentDirectory(): "
+ chooser.getCurrentDirectory());
System.out.println("getSelectedFile() : "
+ chooser.getSelectedFile());
} else {
System.out.println("No Selection ");
}
}

void next_actionPerformed(ActionEvent e){
System.out.println("xxxxxxxxxxxxxx");
this.getContentPane().removeAll();//删去前一个JPanel
this.getContentPane().add(card);//添加新的界面
this.getContentPane().repaint();
}


public static void main(String arg[]){

NewJFrame frame = new NewJFrame();

frame.setLocation(300, 200);
frame.setSize(400, 300);
frame.setVisible(true);

}

}



class CreateAdd_field_actionAdapter implements ActionListener{

private NewJFrame adaptee;

CreateAdd_field_actionAdapter(NewJFrame adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.field_actionPerformed(e);
}

}
class CreateAdd_next_actionAdapter implements ActionListener{

private NewJFrame adaptee;

CreateAdd_next_actionAdapter(NewJFrame adaptee) {
this.adaptee = adaptee;
}

public void actionPerformed(ActionEvent e) {
adaptee.next_actionPerformed(e);
}

}
...全文
1183 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jclick 2010-07-19
  • 打赏
  • 举报
回复
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Demo extends JFrame{
private int counter=0;
private JPanel p1=new JPanel();
private JPanel p2=new JPanel();
private JButton b1=new JButton("点我刷新P2");
private JButton b2=new JButton("我是P2里的");
private JButton b3=new JButton("我是P2里的,刷新出来的");
public Demo(){
this.add(p1,BorderLayout.NORTH);
p1.add(b1);
this.add(p2,BorderLayout.CENTER);
this.setVisible(true);
this.setTitle("Demo");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400,400);
this.setLocationRelativeTo(null);
b1.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
counter++;
p2.removeAll();
new Thread(new Runner(p2)).start();
}
});
}
class Runner implements Runnable{
private JPanel panel;
Runner(JPanel panel){
this.panel=panel;
}
public void run(){
if(counter%2==0){
panel.add(b2);
}
else
panel.add(b3);
panel.updateUI();
}
}
public static void main(String[] args){
new Demo();
}

}



给你个刷新页面的代码。看看吧。
closewbq 2010-07-19
  • 打赏
  • 举报
回复

void next_actionPerformed(ActionEvent e){
System.out.println("xxxxxxxxxxxxxx");
this.getContentPane().removeAll();//删去前一个JPanel
this.getContentPane().add(card);//添加新的界面
this.getContentPane().validate();
this.getContentPane().repaint();
}
Jclick 2010-07-19
  • 打赏
  • 举报
回复
监听事件,panel上的东西重新布置,然后,panel.updateUI();
Jclick 2010-07-19
  • 打赏
  • 举报
回复
事件监听,需要刷新的时候,改变panel的内容然后重绘。
martin_zhou 2010-07-19
  • 打赏
  • 举报
回复
怎么刷? 不出来
同光和尘 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jclick 的回复:]
刷新面板来实现跳转。
[/Quote]
+1
Jclick 2010-07-19
  • 打赏
  • 举报
回复
刷新面板来实现跳转。

62,614

社区成员

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

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