Java 有没有一种简单的方法来编写这段代码?

Java 有没有一种简单的方法来编写这段代码?,java,arrays,jframe,Java,Arrays,Jframe,我一直在制作一个程序,其中我制作了一个组合框,然后在其中添加一个actionlistener,如果我单击它,就会出现一个框架 代码: 我会用if-else,在这种情况下,我会用很多if-16的例子。有没有一种方法可以为这个框架编写一个更短的代码?所以我会继续做if-else直到16指数 提前谢谢你!!(:如果唯一要更改的是标签和文本,则创建如下方法: public Jframe getJframe(String label, String text){

我一直在制作一个程序,其中我制作了一个
组合框
,然后在其中添加一个
actionlistener
,如果我单击它,就会出现一个框架

代码:

我会用if-else,在这种情况下,我会用很多if-16的例子。有没有一种方法可以为这个框架编写一个更短的代码?所以我会继续做if-else直到16指数


提前谢谢你!!(:

如果唯一要更改的是标签和文本,则创建如下方法:

      public Jframe getJframe(String label, String text){    
            JFrame frameArray = new JFrame();
            frameArray.setBounds(100, 100, 830, 601);
            frameArray.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            frameArray.getContentPane().setLayout(null);
            frameArray.setVisible(true);

            JLabel lblArray = new JLabel(label);
            lblArray.setFont(new Font("Lucida Bright", Font.BOLD | Font.ITALIC, 25));
            lblArray.setBounds(368, 63, 122, 41);
            frameArray.getContentPane().add(lblArray);

            JLabel AnArrayIs = new JLabel();
            AnArrayIs.setBackground(Color.WHITE);
            AnArrayIs.setText(text);
            AnArrayIs.setBounds(46, 103, 357, 432);
            frameArray.getContentPane().add(AnArrayIs); 
            return frameArray;
            }
那么您的if语句或switch语句只需如下所示:

Jframe myJframe = null;
if(list==1){
  myJframe = getJframe(menuList[1],"An array is.....")
} else if(list ==2){
  myJframe = getJframe(menuList[2],"BubbleSort is ...")
}....
我可能会为定义创建常量,以便您可以轻松地更改它们,例如:

public static final String ARRAY_DEFINITION = "An array is a ....";

降低代码复杂性的一种方法是创建不同的
JFrame
子类来处理每个索引

第一个索引是“Array”,因此创建一个新的
JFrame
子类:

public class ArrayFrame extends JFrame {
    public ArrayFrame () {
        setBounds(100, 100, 830, 601);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        getContentPane().setLayout(null);

        JLabel lbl = new JLabel("Array");
        lbl.setFont(new Font("Lucida Bright", Font.BOLD | Font.ITALIC, 25));
        lbl.setBounds(368, 63, 122, 41);
        getContentPane().add(lbl);

        JLabel detailLbl = new JLabel();
        detailLbl.setBackground(Color.WHITE);
        detailLbl.setText("An array is...");
        detailLbl.setBounds(46, 103, 357, 432);
        getContentPane().add(detailLbl); 
    }
}
在if语句中,创建
ArrayFrame
的实例并打开该框架:

if (list == 1) {
    ArrayFrame frame = new ArrayFrame();
    frame.setVisible(true);
}
这更易于维护,隐藏了很多细节,这意味着它更抽象。每个人都喜欢OOP中的抽象

“好吧,我仍然需要创建16个类,”你说。你实际上可以创建一个类

public class MyFrame extends JFrame {
    public MyFrame (String title, String details) {
        setBounds(100, 100, 830, 601);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        getContentPane().setLayout(null);

        JLabel lbl = new JLabel(title);
        lbl.setFont(new Font("Lucida Bright", Font.BOLD | Font.ITALIC, 25));
        lbl.setBounds(368, 63, 122, 41);
        getContentPane().add(lbl);

        JLabel detailLbl = new JLabel();
        detailLbl.setBackground(Color.WHITE);
        detailLbl.setText(details);
        detailLbl.setBounds(46, 103, 357, 432);
        getContentPane().add(detailLbl); 
    }
}
您可以通过如下方式调用构造函数来创建此框架:

if (list == 1) {
    MyFrame frame = new MyFrame ("Array", "An array is...");
    frame.setVisible(true);
}

也可以考虑使用开关而不是if语句。

我会使用if-else在这种情况下,我会使用很多if-16的例子。有没有一种方法可以让我为这个框架编写一个更短的代码?所以我会一直使用if-else直到16索引

我认为您最好的选择是使用
switch
语句,而不是16个if/else语句。这样会简单得多

请参见中的示例

if (list == 1) {
    MyFrame frame = new MyFrame ("Array", "An array is...");
    frame.setVisible(true);
}
public class SwitchDemo {
    public static void main(String[] args) {

        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;
        }
        System.out.println(monthString);
    }
}