在java swing中对一个按钮执行多个动作

时间:2012-08-17 06:12:30

标签: java swing

我正在尝试以编程方式在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执行特定操作。

是否可以使用命令模式?

3 个答案:

答案 0 :(得分:3)

好的,你可以在按钮中添加动作监听器。事件发生时,这些动作侦听器会执行某些操作。

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

例如(粗略地),

int state = 0; //主页

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

现在,在您的原始问题中,当按钮(您希望具有多个功能的按钮)触发时,您可以根据“状态”变量选择要执行的操作。

答案 1 :(得分:1)

  1. 查看CardLayout

  2. JDialogJDialog已默认预先实施BorderLayout)的卡片放入中心区域

  3. 创建新JPanel并放置JButtons

  4. {li>

    JPanelJButtons放入SOUTH区域

  5. 在此论坛上搜索基于CardLayout

  6. 的向导或图像预测的一些优秀示例

答案 2 :(得分: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;
   }