当用户单击应用程序窗口上的某个点时,如何更改Java中的背景颜色?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了当用户单击应用程序窗口上的某个点时,如何更改Java中的背景颜色?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3861字,纯文字阅读大概需要6分钟。
内容图文
![当用户单击应用程序窗口上的某个点时,如何更改Java中的背景颜色?](/upload/InfoBanner/zyjiaocheng/678/8cc317155b5b4d0da4fecd3444fb33ed.jpg)
目前,我已经制作了文本标签并将其放置在我的窗口上,指示它们在mouseClick上执行操作,但这增加了我的编码,因为我有多个位置用户可以更改颜色.下面是我出现的标签代码之一;
JLabel label_1 = new JLabel("");
label_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
contentPane.setBackground(Color.CYAN);
}
});
label_1.setEnabled(false);
label_1.setBounds(0, 0, 19, 19);
contentPane.add(label_1);
但这给我的程序增加了不必要的代码,我想要的是当用户单击窗口的一部分时说中间(大约1厘米处)产生或改变几毫米的背景颜色.
我认为可以通过在内容窗格本身上为mouseClicked添加一个侦听器,然后在单击某个点时告诉代码将颜色更改为contentPane.setBackground(Color.CYAN)来完成.我有2个要更改颜色的点.
我无法弄清楚告诉我的代码,因此如果单击特定区域,它将更改窗口的背景颜色.
谢谢.
– – -编辑 – – –
我目前正在使用contentPane在窗口上添加元素,当前的代码如下所示
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 584, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
例如,我不能只是将鼠标侦听器事件添加到用户单击的getBound位置吗?
将这段代码添加到我之前添加contentPane的代码中
contentPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
}
并在公共void mouseClicked(MouseEvent e){}中添加if语句,即if(getBound(0,0,20,20))contentPane.setBackground(Color.CYAN);
与此类似,这是行不通的.
解决方法:
如果我以正确的方式理解了该查询,那么您希望通过单击该内容窗格的某些指定位置来在内容窗格上设置背景色.如果是这种情况,请查看此示例代码,然后尝试单击“内容窗格”的“右上角”,“左下角”或“中心”以查看颜色变化.它仅创建三个Rectangle对象,它们指定内容窗格上的每个区域,单击该区域即可更改背景色.只需通过调用矩形.contains(int x,int y)方法来检查X,Y坐标是否包含在任何Rectangle Bounds中.
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.*;
public class LocationExample {
private JButton button;
private JTextField tField;
private JPanel contentPane;
private static final int RECTANGLE_DIMENSION = 50;
private List<Rectangle> rectangles;
private Random random;
private MouseAdapter mouseAdapter = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent me) {
int x = me.getX();
int y = me.getY();
for (Rectangle rectangle : rectangles) {
if (rectangle.contains(x, y)) {
contentPane.setBackground(getRandomColor());
}
}
}
};
private ComponentAdapter componentAdapter = new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent ce) {
setRectangleBounds();
}
};
public LocationExample() {
random = new Random();
rectangles = new ArrayList<Rectangle>();
}
private void displayGUI() {
JFrame frame = new JFrame("Location Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
contentPane = new JPanel() {
@Override
public Dimension getPreferredSize() {
return (new Dimension(300, 300));
}
};
contentPane.setOpaque(true);
contentPane.addMouseListener(mouseAdapter);
contentPane.addComponentListener(componentAdapter);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
setRectangleBounds();
}
private void setRectangleBounds() {
getRectangle(contentPane.getWidth() - RECTANGLE_DIMENSION, 0);
getRectangle(0, contentPane.getHeight() - RECTANGLE_DIMENSION);
getRectangle((contentPane.getWidth() / 2) - (RECTANGLE_DIMENSION / 2),
(contentPane.getHeight() / 2) - (RECTANGLE_DIMENSION / 2));
}
private void getRectangle(int x, int y) {
rectangles.add(new Rectangle(x, y, RECTANGLE_DIMENSION, RECTANGLE_DIMENSION));
}
private Color getRandomColor() {
return (new Color(random.nextInt(256),
random.nextInt(256), random.nextInt(256)));
}
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
new LocationExample().displayGUI();
}
};
EventQueue.invokeLater(runnable);
}
}
内容总结
以上是互联网集市为您收集整理的当用户单击应用程序窗口上的某个点时,如何更改Java中的背景颜色?全部内容,希望文章能够帮你解决当用户单击应用程序窗口上的某个点时,如何更改Java中的背景颜色?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。