我是Java编程的新手,我想知道如何搞乱按钮,我创建了一个" Home Screen"还有一些按钮和文字,但是它并不像我想的那样先进,我想知道如何创建像图像效果这样的东西,所以让我们说我将鼠标悬停在一个按钮,我希望它在它后面显示一个发光的动画,或者因为我没有那个动画,如果没有简单的方法来创建它,只需在它后面显示一个图像就可以了,我也是按下按钮时没有发生任何事情bcs IDK如何做到这一点,所以如果你可以提供帮助,那就太棒了! 这是我目前的代码:
package Menu;
import java.awt.FlowLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class BackgroundPanel extends JFrame {
private BufferedImage image;
public BackgroundPanel() {
ImageIcon icon = new ImageIcon("image_path.png");
JButton btn = new JButton(icon);
btn.setOpaque(false);
btn.setContentAreaFilled(false);
btn.setBorderPainted(false);
btn.setFocusPainted(false);
try {
image = ImageIO.read(new File("image_path.jpg"));
// Set your Image Here.
this.setContentPane(new JLabel(new ImageIcon(image)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JPanel panel = new JPanel();
panel.add(new JLabel("Username:"));
panel.add(new JTextField("",20));
panel.add(new JLabel("Password:"));
panel.add(new JTextField("",20));
panel.add(btn);
//Adding components to Panel and JFrame
this.add(panel);
// JFrame Properties
this.setSize(1280,720);
this.setLayout(new FlowLayout());
this.setResizable(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Panel");
this.setVisible(true);
}
public static void main(String[] args) {
new BackgroundPanel();
}
}
答案 0 :(得分:2)
[...]我也没有发生任何事情按下按钮bcs IDK如何做到这一点,所以如果你可以帮助它,它会很棒[...]
您需要在按钮中添加ActionListener
。还有其他各种方法可以检测按钮是否被按下,但这个是(在我看来)最简单的方法。你就是这样做的:
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
// code you write in here will be executed if the button was pressed
}
});
[...]让我说我将鼠标悬停在一个按钮上,我希望它在它后面显示一个发光的动画,或者因为我没有那个动画,如果没有简单的方法来创建它,只需显示一个图像它背后是好的[...]
为此,您必须处理JLayeredPane
和MouseListener
s。 Here是我在“运行中”创建的一个示例;布局非常脏,需要改进。无论如何,你会注意到,一旦你将鼠标悬停在按钮上,按钮后面会出现一个包含LA- -LL!
的黑色边框。这是一个JLabel
,您可以使用JLabel.setIcon
方法来显示图像等。
答案 1 :(得分:1)
让我说我将鼠标悬停在一个按钮上,我希望它在它后面显示一个发光的动画,或者因为我没有那个动画,如果没有简单的方法来创建它,只需在它后面显示一个图像就可以了< / p>
这并不容易,它需要跳过一大堆箍,特别是当按钮不是矩形时。
我前一段时间做了一个“验证荧光笔”的原型,它突出显示了无效字段,它使用了JXLayer库,但应该可以转换为使用核心库上包含的JLayer库
有关详细信息,请参阅How can I change the highlight color of a focused JComboBox
另一种可能性是我们要创建自定义JPanel
并覆盖其paintComponent
方法并在那里绘制效果。你可以放置你的按钮,并结合布局管理器和边框,你应该能够将按钮放在你需要的位置。
这个问题是,它会影响表单的覆盖布局,因为在布置主表单时会考虑效果
按下按钮时我真的没有发生任何事情bcs IDK如何做到这一点,所以如果你可以帮忙那就太棒了