@restricteur で述べたように、コードはコンパイルされません。
これは、gui
を保持するクラスmain(..)
が別のクラス内にネストされているためです。したがってstatic
、ネストされたクラスがマークされていない限り、メソッドの宣言は許可されませんstatic
。(私は単純に から移動/ネスト解除Gui
しましたGui2
)
あなたのコードが機能することに加えて、私はあなたが急いでいると思います-マウスを JLabel
3〜4秒間保持すると、次のようにToolTip
表示されます。
(もちろん、コンパイルエラーなしでコードを使用してください):
コードに関する提案:
1) Java の命名規則に注意してください。つまり、クラス名は大文字で始まり、その後の新しい単語もorにgui
なる必要がありますが、私は前者を好みます。Gui
GUI
2) 可視に設定する前 (ただし、コンポーネントが追加された後) に use を呼び出さず、setSize
適切JFrame
な値LayoutManager
を呼び出します。pack()
JFrame
JFrame
3)インスタンスを作成して使用するだけで、不必要に拡張しないでください。
4) 常にブロックを介してイベント ディスパッチ スレッドで Swing コンポーネントを作成および操作します。SwingUtilities.invokeLater(Runnable r)
5) s をsetDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
使用しない場合は、GUI を終了しても続行できるため、これを選択します。Timer
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();
}
});
}
}