Както бе споменато от @restricteur, вашият код не се компилира.
Това се дължи на факта, че вашият клас gui
, който съдържа main(..)
, е вложен в друг клас, следователно не е разрешена static
декларация на метод, освен ако вложеният клас не е означен с static
. (Просто преместих/демонтирах Gui
от Gui2
)
Освен че вашият код работи, мисля, че прибързвате - задръжте мишката върху JLabel
за около 3-4 секунди и трябва да видите ToolTip
да се появява:
(използвайки вашия код без грешка при компилиране, разбира се):
Предложения относно кода:
1) Моля, спазвайте конвенциите за именуване на Java, т.е. имената на класовете трябва да започват с главна буква и всяка нова дума след това също трябва, т.е. gui
става Gui
или GUI
, но аз предпочитам първото.
2) Не извиквайте setSize
на JFrame
използвайте and= подходящо LayoutManager
и извиквайте pack()
на JFrame
, преди да го настроите видимо (но след като са добавени компоненти).
3) Не разширявайте JFrame
ненужно, просто създайте екземпляр и го използвайте.
4) Винаги създавайте и манипулирайте Swing Components в Нишка за изпращане на събития през блок 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();
}
});
}
}
person
David Kroukamp
schedule
17.01.2013