JButtons 仅在鼠标悬停时工作
JButtons Only Working When Mouse Hovers Over
我是 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 纹理而不是默认纹理的方法会很好:)
由于您覆盖了 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();
}
});
我是 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 纹理而不是默认纹理的方法会很好:)
由于您覆盖了 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();
}
});