是否可以在java中覆盖生成的actionPerformed中实现?

zbq4xfa0  于 2023-08-01  发布在  Java
关注(0)|答案(2)|浏览(64)

顺便说一句,我在java中使用netbeans作为IDE。现在我有一个名为NewSchoolYearDialog的类,由jdialog ![NewSchoolYearDialog Design] (https://i.stack.imgur.com/oOERx.png)扩展。
上图中保存按钮用途是将学年插入数据库。现在我想重用这个设计来创建另一个jdialog来编辑学年,只需要创建一个类的对象NewSchoolYearDialog,将标题设置为“Edit School Year”,并更改保存按钮实现来更新学年。我应该创建另一个由jdialog扩展的类,然后复制设计,还是有其他方法?有人能帮帮我吗我是Java新手。提前谢谢你。

jgovgodb

jgovgodb1#

消除您的顾虑。
考虑到这样一个事实,即编辑器应该只做一项工作,允许用户输入数据。保存它不是它的责任。
相反,创建一个“编辑器”,它只执行管理输入的核心功能(即确保“起始年份”总是早于“终止年份”)。然后提供一些getter来从编辑器中获取值。
然后,您应该使用依赖项注入将值传递到编辑器中。
然后,一个简单的解决方案是在JOptionPane中显示编辑器。然后根据响应,保存结果...要么就不要。

import java.awt.EventQueue;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;

public class Main {
    public static void main(String[] args) {
        new Main();
    }

    public Main() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                YearEditorPane editorPane = new YearEditorPane(2023, 2024);
                int option = JOptionPane.showOptionDialog( 
                        null,
                        editorPane,
                        "Add Shcool Year",
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.PLAIN_MESSAGE,
                        null,
                        new String[] {"Save", "Cancel"},
                        "Save"
                );
                if (option == 0) {
                    int fromYear = editorPane.getFromYear();
                    int toYear = editorPane.getToYear();
                    System.out.println("Save the data - " + fromYear + " - " + toYear);
                }
            }
        });
    }

    public class YearEditorPane extends JPanel {

        private JSpinner fromYearSpinner;
        private JSpinner toYearSpinner;

        public YearEditorPane(int fromYear, int toYear) {
            add(new JLabel("School Year:"));

            fromYearSpinner = new JSpinner(
                    new SpinnerNumberModel(
                            fromYear, 
                            fromYear, 
                            fromYear + 100, 
                            1
                    ));
            toYearSpinner = new JSpinner(
                    new SpinnerNumberModel(
                            toYear, 
                            toYear, 
                            toYear + 100, 
                            1
                    ));

            add(fromYearSpinner);
            add(toYearSpinner);
        }

        public int getFromYear() {
            return (int)fromYearSpinner.getValue();
        }

        public int getToYear() {
            return (int)toYearSpinner.getValue();
        }        
    }
}

字符串

ghhkc1vu

ghhkc1vu2#

作为干净代码的一个规则,复制你的代码并不干净,根据你的问题,插入和更新之间的区别只是有没有id。你可以检查id是否存在,然后调用update或insert。

相关问题