如何從一個函數中返回一個JButton並用它在不同的類中執行一個動作,我正在創建一個僅用於練習我的java技巧的庫(我缺少這個部分),而且我正在嘗試使它通過創建對象和函數來創建JFrames和JButtons更簡單,問題是,在Frame.java我回來了JButton在那裏創建,然後使用它與ActionListener
,但問題是,它既沒有顯示錯誤也沒有工作,有人可能會給我一個解釋,如果可能的話,解決方案?如何從函數中返回一個JButton並將其用於在java中的其他類中執行操作?
按Ctrl + F:9812934
|從那裏我返回JButton,並在那裏我用它進行切換。
Main.java
package twopackages;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import lib.Button;
import lib.Frame;
public class Main extends Frame{
public static void main(String[] args){
Frame frame = new Frame();
Button button = new Button();
frame.width = 400;
frame.height = 300;
frame.title = "title";
frame.visible = true;
button.width = 100;
button.height = 30;
button.title = "button";
button.top = 10;
button.left = 10;
button.visible = true;
frame.addButton(button);
frame.run();
frame.addButton(button).addActionListener(new ActionListener() {//Get JButton returned after calling function (I know it's crappy, but I could not find a way to do something similar) 9812934
public void actionPerformed(ActionEvent arg0) {
System.out.println("sadasdasd");
}
});
}
}
Frame.java
package lib;
import javax.swing.JButton;
import javax.swing.JFrame;
import lib.Button;
public class Frame {
public int width;
public int height;
public String title;
public boolean visible;
JFrame FRAME = new JFrame();
public void run(){
FRAME.setSize(width, height);
FRAME.setTitle(title);
FRAME.setLayout(null);
FRAME.setLocationRelativeTo(null);
FRAME.setVisible(visible);
FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FRAME.setResizable(false);
}
public JButton addButton(Button button){
JButton BUTTON = new JButton();
BUTTON.setText(button.title);
BUTTON.setBounds(button.left, button.top, button.width, button.height);
BUTTON.setVisible(button.visible);
FRAME.add(BUTTON);
return BUTTON;//Here's where I return the JButton 9812934
}
}
Button.java
package lib;
import javax.swing.JButton;
public class Button{
public int left;
public int top;
public int width;
public int height;
public String title;
public boolean visible;
JButton button = new JButton();
public void button(){
button.setBounds(left, top, width, height);
button.setText(title);
button.setVisible(visible);
}
}
1)Java GUI必須使用不同語言環境中使用不同PLAF的不同OS,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 2)請學習常用的Java命名規則(命名約定 - 例如'EachWordUpperCaseClass','firstWordLowerCaseMethod()','firstWordLowerCaseAttribute',除非它是'UPPER_CASE_CONSTANT')並且一致地使用它。 –