2

我正在尝试以编程方式在 java swing 中创建一个向导。

在向导窗格上,我有一个下一步按钮,它必须根据向导上显示的面板执行多个操作。

是否可以使用 java 命令模式?我可以知道怎么做吗?提前致谢。

我用于向导的代码是

this.mainPanel.add(fileSelectionPane,"SELECT FILE");
this.mainPanel.add(sqlConnectionPane,"SQL CONNECTION");           
this.mainPanel.add(devicePane,"PARSER");    
this.mainPanel.add(detailsPane,"DISPLAY");      
thisLayout.show(this.mainPanel,"SELECT FILE");    
this.finishButton.setEnabled(false);
this.backButton.setEnabled(false);
if(newValue==1)    {     
    this.thisLayout.show(this.mainPanel, "SQL CONNECTION");   
    this.nextButton.setEnabled(true);    
    this.nextButton.setText("Connect..");  
    this.cancelButton.setEnabled(true);    
    this.backButton.setEnabled(true);
}  

if(newValue==2)    {    
    this.thisLayout.show(this.mainPanel, "PARSER");  
    this.nextButton.setEnabled(true);    
    this.nextButton.setText("Parse..");  
    this.cancelButton.setEnabled(true);    
    this.backButton.setEnabled(true);    
}

我希望下一个按钮对 SELECT FILE 和 SQL CONNECTION 执行特定操作。

是否可以使用命令模式?

4

3 回答 3

3

好的,所以,您将动作侦听器添加到按钮。当事件发生时,这些动作监听器会做一些事情。

您想根据显示的面板更改按钮的功能吗?为什么不设置一个反映向导状态的实例变量呢?

例如(大致),

整数状态 = 0;// 主面板

将面板更改为帮助页面,事件侦听器被触发,将“状态”设置为 1。您现在正在跟踪正在显示的面板。

现在,在您最初的问题中,当按钮(您想要具有多种功能的按钮)触发时,您可以根据“状态”变量选择它将采取的操作。

于 2012-08-17T06:23:10.990 回答
1

试试下面的按钮代码:

JButton btn1;
btn1= new javax.swing.JButton();
btn1.setToolTipText("Submit");
btn1.setContentAreaFilled(false);
btn1.setBorderPainted(false);
btn1.setMargin(new java.awt.Insets(2, 2, 2, 2));
btn1.addActionListener(this);
btn1.setIcon(this.getIcons()[21]);
add(btn1); // add to Jpanel
btn1.setBounds(250,10, 12, 12);

public void actionPerformed(java.awt.event.ActionEvent evt) {
   Object obj = evt.getSource();
   if (obj == btn1) {
      // your function on on click of button
      return;
   }
于 2012-08-17T06:54:41.403 回答
1
  1. 看看CardLayout

  2. 那些放在JDialog中的卡片(JDialog默认情况下已预先实现BorderLayout)到 CENTER 区域

  3. 创建一个新的JPanel并在那里放置JButtons

  4. JPanel放在JButtonsSOUTH地区

  5. 在这里搜索,在这个论坛上,有一些基于向导或图像预览的优秀示例CardLayout

于 2012-08-17T06:22:06.160 回答