正如@restricteur 所述,您的代码无法编译。
这是因为gui
持有 的类main(..)
嵌套在另一个类中,因此static
除非嵌套类被标记,否则不允许声明方法static
。(我只是Gui
从移动/取消嵌套Gui2
)
除了您的代码确实有效之外,我认为您很仓促 -将鼠标悬停 JLabel
3-4 秒,您应该会看到以下内容ToolTip
:
(使用您的代码当然没有编译错误):
代码建议:
1)请注意java命名约定,即类名应该以大写字母开头,之后的每个新词也应该gui
变成Gui
或GUI
,但我更喜欢前者。
2)不要调用setSize
使用JFrame
和=适当LayoutManager
并在设置为可见之前调用pack()
(JFrame
但在添加组件之后)。
3)不要不必要地扩展JFrame
,只需创建一个实例并使用它。
4) 始终通过块在事件调度线程上创建和操作 Swing 组件。SwingUtilities.invokeLater(Runnable r)
5) 选择setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
除非使用Timer
s,因为main(..)
无论是否退出 GUI,这将允许继续。
这是具有上述修复的代码:
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
class Gui2 {
private JLabel item1;
private JFrame frame;
public Gui2() {
frame = new JFrame("The title bar");
frame.setLayout(new FlowLayout());
item1 = new JLabel("label 1");
item1.setToolTipText("This is a message");
String str = item1.getToolTipText();
System.out.println(str);
frame.add(item1);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
class Gui {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Gui2();
}
});
}
}