java - 有没有办法以简短的方式编写这段代码?

标签 java arrays jframe

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

代码:

String menulist [] = {"", "Array", "BubbleSort" ," - Selection Sort"," - Insertion Sort"," - Merge Sort","Recursion"," - Factorial"," - Anagramming"," - Towers of Hanoi","Stacks","Trees"," - Types of Trees","Binary Tree","Shell Sort","Quick Sort","Hash Table","Graphs"};
    final JComboBox SelectMenu = new JComboBox(menulist);
    SelectMenu.setFont(new Font("Tahoma", Font.PLAIN, 17)); 

    SelectMenu.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            int list = SelectMenu.getSelectedIndex();



            if(list == 1){

                //Array
                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("Array");
                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("An array is a systematic arrangement of similar objects, usually in rows and columns.");
                AnArrayIs.setBounds(46, 103, 357, 432);
                frameArray.getContentPane().add(AnArrayIs); 

我会使用 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 ....";

关于java - 有没有办法以简短的方式编写这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36097908/

相关文章:

java - spring rabbit amqp @RabbitListener 配置消费者的最小和最大数量

c - 为什么 "char array"需要两个 "[]"而 "int array"需要一个 "[]"?

javascript - 将字符串数组转换为整数数组

java - 这是向 Java Frame 教授有关 Windows 的 Aero Snap 功能的唯一方法吗?

java - Swing 架设置尺寸

java - 如何将数组存储到 ArrayList 的元素中?

java - 如何在groovy测试用例中验证java的arraylist的每个条目

arrays - 如何在octave/matlab的多维数组中找到所有具有相同值的单元格

java - 如何在方法期间而不是之后进行按钮更改重绘?

java - Eclipse:如何更改方法声明中返回类型的颜色