【发布时间】:2014-05-01 06:52:28
【问题描述】:
我有一个关于 Java 图形用户界面设计的菜鸟问题:我们应该使用更多方法还是更多对象?举一个非常简单的例子:对话框。
对于对话框,我可以使用方法或使用对象:
使用方法:
public static void MakeDialog() {
final JFrame frame = new JFrame();
String help = "";//Reader.readhelp();
JTextArea contentArea = new JTextArea(help, 60, 60);
JScrollPane scroller = new JScrollPane(contentArea);
scroller.setPreferredSize(new Dimension (650,650));
JButton close = new JButton("Close");
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent a) {
frame.dispose();
}
});
JPanel panel = new JPanel();
panel.add(scroller);
panel.add(close);
frame.add(panel);
frame.setTitle("Help");
frame.setSize(700, 700);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
然后我只需要调用这个方法需要这个对话框出现。
但是,我可以有另一种方法:创建一个对话框类:
public class MyDialog {
public MyDialog() {
final JFrame frame = new JFrame();
String help = "";//Reader.readhelp();
JTextArea contentArea = new JTextArea(help, 60, 60);
JScrollPane scroller = new JScrollPane(contentArea);
scroller.setPreferredSize(new Dimension (650,650));
JButton close = new JButton("Close");
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent a) {
frame.dispose();
}
});
JPanel panel = new JPanel();
panel.add(scroller);
panel.add(close);
frame.add(panel);
frame.setTitle("Help");
frame.setSize(700, 700);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
真正困扰我的问题是:哪个更有效地使用内存?对于软件中的一两个对话框,这可能根本不是问题。如果我需要处理数百个对话,我需要考虑我可能消耗的内存资源。根据我目前了解到的情况,调用该方法比创建 MyDialog 对象要好,因为一旦处理该方法,就会释放内存。但是,如果我不对其采取任何操作,对象 MyObject 将保留在内存中。我面临的问题是:经过几个小时的开发,我发现我只剩下几MB的内存,我必须退出Eclipse并重新启动我的电脑才能释放内存。
因此:
1) 哪个更好?
2) 如果创建对象更好,如果我不再使用它,如何从内存中删除该对象?
【问题讨论】:
-
因为
JOptionPane已经是一个现有的类并且您没有向它添加任何功能,所以第一个(方法)接近会,恕我直言,这是一种更好的方法,因为您所做的一切要么类正在配置JOptionPane
标签: java object user-interface memory methods