- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个更大的程序,我尝试了几种方法(所有方法都有效),但我目前很喜欢这种方法,尽管我不知道它的某些方面是否代表糟糕的编程习惯.本例中使用的代码只是为了理解,没有粘贴整个代码。
这段代码(粘贴在下方)创建了一个带有标签的新 ClassMain 对象和一个用于编辑标签的静态方法。 ClassEditor 是从 ClassMain 实例化的,它返回一个按钮。
现在我想知道这是否是一种不好的做法,我在按钮上有一个操作,当单击该按钮时,它会调用 ClassMain 中的静态方法并将标签设置为随机数。我想知道这是否是不好的做法的原因是因为我实际上并没有从 ClassMain 对象的直接实例化中调用该方法,我只是这样做:ClassMain.setLabel("");
。而且我不完全确定这是什么。我有一个 ClassMain 的实例化,但如果我有多个,它还能工作吗?那么如何通过这种方式而不是使用引用变量来编辑创建对象的各个方面呢?如果我有多个类(class),它会产生问题吗?
抱歉,如果这些问题比较啰嗦,很难准确地问清楚。我提供了下面的代码,以便您了解我的意思。
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);
}
}
非常感谢任何能帮助我的人,非常感谢。只是尝试学习和理解良好做法以及它们为何有效。
最佳答案
我可能不会使用静态方法和变量,而是像这样简单地重写它(我也更改了名称 - 一个好的做法是以每个人都知道其含义的方式命名所有内容):
ClassMain:
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ClassMain extends JFrame {
private JLabel label;
public static void main(String[] args) {
new ClassMain();
}
public ClassMain() {
super("This is my app");
setSize(450,80);
setLayout(new GridLayout(0,2));
label = new JLabel("Hi");
ClassEditor classEditor = new ClassEditor(this);
add(label);
add(classEditor.getButton());
setVisible(true);
}
public void setLabel(String text) {
label.setText(text);
}
}
类编辑器:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class ClassEditor implements ActionListener {
private ClassMain classMain;
public ClassEditor(ClassMain classMain) {
this.classMain = classMain;
classMain.setLabel("Click the button for a random number!");
}
public JButton getButton() {
JButton button = new JButton("Click me!");
button.addActionListener(this);
return button;
}
public void actionPerformed(ActionEvent event) {
int i = (int) (Math.random()*10);
classMain.setLabel("Random Number: "+i);
}
}
关于Java - 这是使用类来编辑标签的不良做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9337184/
我在使用 Heroku 时遇到问题,当我尝试部署我的应用程序时,它没有运行 run assets:precompile而且我还没有在本地预编译我的 Assets ,我在 Git 中没有 list 文件
(这是为您提供围绕我的问题的背景信息。您可以跳到“问题”并阅读该内容,然后如果您想直接进入主题,则可以返回并浏览背景知识.抱歉,这是一面文字墙!) 我需要将一堆非常非常糟糕的 JSON 存储在数据库中
我是一名优秀的程序员,十分优秀!