我正在尝试以编程方式在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执行特定操作。
是否可以使用命令模式?
答案 0 :(得分:3)
好的,你可以在按钮中添加动作监听器。事件发生时,这些动作侦听器会执行某些操作。
您想要根据显示的面板更改按钮的功能吗?为什么不设置反映向导状态的实例变量?
例如(粗略地),
int state = 0; //主页
将面板更改为帮助页面,事件监听器触发,将“状态”设置为1.您现在正在跟踪正在显示的面板。
现在,在您的原始问题中,当按钮(您希望具有多个功能的按钮)触发时,您可以根据“状态”变量选择要执行的操作。
答案 1 :(得分:1)
将JDialog(JDialog
已默认预先实施BorderLayout)的卡片放入中心区域
JPanel
将JButtons
放入SOUTH
区域
在此论坛上搜索基于CardLayout
答案 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;
}