只有鼠标悬停时JButtons才能工作

时间:2015-01-24 04:20:30

标签: java swing hover jbutton mouse

我是Java和编程的初学者,我开始使用几个按钮制作一个简单的JFrame。现在,当我创建按钮时,它们出现的唯一方式就是我用鼠标悬停它们。

import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridBagLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame {

public Main() {
    setTitle("Test");
    setSize(600, 500);
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setLayout(new FlowLayout());
    JPanel p = new JPanel();
    JButton b = new JButton("Derp");
    p.add(b);
    add(b);
    setVisible(true);
    revalidate();
    repaint();
} 

public static void main(String[] args) { 
    new Main();
}

public void paint(Graphics g) {
    g.drawString("Under Construction...", 240, 250);

}

}

帮助将不胜感激,请注意我不太了解Java,我不知道语言的下降量。此外,一种使按钮具有Aero纹理而不是默认纹理的方法会很好:)

1 个答案:

答案 0 :(得分:1)

由于您覆盖paint,因此需要将super.paint(g);作为第一行。

public void paint(Graphics g) {
    super.paint(g); // <-- add this.
    g.drawString("Under Construction...", 240, 250);
}

此外,您应该将您的逻辑从main()线程移开;像

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        new Main();
    }
});