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);
}
}