以下两种方法均返回gui引用类型。
如果我将JFrame和JButton返回类型替换为void并除去return语句,它仍然可以工作。我不明白两种方法之间的区别。
public class JavaGui {
JFrame frame;
JFrame createGui(){
GraphicsConfiguration g = null ;
frame = new JFrame(g);
frame.setTitle("gui");
frame.setSize(600, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(null);
return frame;
}
JButton createButton(){
JButton button=new JButton();
button.setBounds(130,100,100, 40);
button.setText("aaa");
button.setSize(100, 40);
button.setLayout(null);
frame.add(button);
return button;
}
public static void main(String[] args){
JavaGui javaGui=new JavaGui();
javaGui.createGui();
javaGui.createButton();
}
}
答案 0 :(得分:2)
createButton
和createGui
应该创建一个按钮和gui,而没有别的。在代码创建它们的过程中,并将按钮添加到框架并将框架分配给全局变量。
请查看两种不同的重新实现:
public class JavaGui {
public static JFrame createGui(){
GraphicsConfiguration g = null ;
JFrame frame = new JFrame(g);
frame.setTitle("gui");
frame.setSize(600, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(null);
return frame;
}
public static JButton getButton(){
JButton button=new JButton();
button.setBounds(130,100,100, 40);
button.setText("aaa");
button.setSize(100, 40);
button.setLayout(null);
return button;
}
public static void main(String[] args){
JavaGui.createGui().add(getButton());
}
}
或
public class JavaGui {
static JFrame frame;
static void createGui(){
GraphicsConfiguration g = null ;
frame = new JFrame(g);
frame.setTitle("gui");
frame.setSize(600, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(null);
}
static void addButton(){
JButton button=new JButton();
button.setBounds(130,100,100, 40);
button.setText("aaa");
button.setSize(100, 40);
button.setLayout(null);
frame.add(button);
}
public static void main(String[] args){
JavaGui.createGui();
JavaGui.addButton();
}
}
您将使用第一种情况(返回对象JFrame和JButton)是因为您想在其他地方使用它们。
当您希望方法构建UI(更像状态机)时,将使用第二种情况。
答案 1 :(得分:1)
方法不需要返回任何内容,因为frame
对象存储在其类中。如果它在另一个类或main方法中,则需要return语句。
两种方法都可以访问您的JFrame,因此您可以在它们中进行所有操作,但是下面是一种更好的方法:
public class JavaGui {
JFrame frame;
public JavaGui() {
GraphicsConfiguration g = null;
frame = new JFrame(g);
frame.setTitle("gui");
frame.setSize(600, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(null);
}
public void createButton(){
JButton button = new JButton();
button.setBounds(130,100,100, 40);
button.setText("aaa");
button.setSize(100, 40);
button.setLayout(null);
frame.add(button);
}
public static void main(String[] args) {
JavaGui gui = new JavaGui();
gui.createButton();
}
}