Как уже упоминалось @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(..)
независимо от выхода из графического интерфейса.
Вот код с вышеуказанными исправлениями:
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();
}
});
}
}
person
David Kroukamp
schedule
17.01.2013