我正在構建一個更大的程序,並且我嘗試了幾種方法(所有這些方法都可行),但我目前喜歡這種方法,但我不知道它的某些方面是否代表糟糕的編程實踐。這個例子中使用的代碼只是爲了在不粘貼整個代碼的情況下實現這個想法。Java - 這是一個類的使用來編輯一個標籤壞習慣嗎?
此代碼(粘貼在下面)使用標籤和靜態方法創建一個新的ClassMain對象來編輯標籤。 ClassEditor從ClassMain實例化,它返回一個按鈕。
現在這裏是我想知道如果它是不好的做法,我有一個按鈕上的操作,單擊時,調用ClassMain中的靜態方法,並將標籤設置爲一個隨機數。我想知道這是否是不好的做法,因爲我實際上沒有從ClassMain對象的直接實例調用方法,我只是這樣做:ClassMain.setLabel("");
。我不完全確定這是在呼喚什麼。我有一個ClassMain的實例化,但如果我有多個,它會繼續工作嗎?那麼如何通過這種方式編輯創建的對象的方面而不是使用引用變量呢?如果我有多個班,會不會產生問題?
對不起,如果這些問題是漫無邊際的,很難提出確切的問題。我已經提供了下面的代碼,所以你可以看到我在說什麼。 PS:關於是否會出現多個ClassMain對象的問題,我在兩個窗口中創建了另一個兩個按鈕,只更新了一個標籤。爲什麼是這樣?這是否意味着如果用於一個實例化並不是不好的做法,但是如果用於更多的話則不好呢?我希望有人能幫助我解決這些問題!
ClassMain:
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ClassMain extends JFrame {
private static JLabel l;
public static void main(String[] args) {
new ClassMain();
}
public ClassMain() {
super("This is my app");
setSize(450,80);
setLayout(new GridLayout(0,2));
l = new JLabel("Hi");
ClassEditor ce = new ClassEditor();
add(l);
add(ce.getButton());
setVisible(true);
}
public static void setLabel(String stringA) {
l.setText(stringA);
}
}
類編輯:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class ClassEditor implements ActionListener {
public ClassEditor() {
ClassMain.setLabel("Click the button for a random number!");
}
public JButton getButton() {
JButton b = new JButton("Click me!");
b.addActionListener(this);
return b;
}
public void actionPerformed(ActionEvent arg0) {
int i = (int) (Math.random()*10);
ClassMain.setLabel("Random Number: "+i);
}
}
非常感謝的人誰可以幫助我,非常感謝。只是試圖學習和理解良好的做法,爲什麼他們的工作。
這很好,你只會有一個單一的標籤。你可以考慮只用'CalssMain.getLabel()。setText(text);'返回標籤本身。 – rtheunissen 2012-02-18 00:16:24