Java 如何在单击netbeans时设置多个jlabel的颜色?
我在一个JPanel上有多个JLabel。当我单击JLabel时,背景变为绿色 我想一次只做一个绿色标签。例如,如果单击JLabel1,它必须变为绿色。如果单击另一个JLabel2,JLabel1必须变为红色,JLabel2必须变为绿色 我有很多JLabel,为每个人举办活动是没有效率的。我找了很多,但什么也没找到。我正在使用Netbeans 8.1 jlabel被声明和初始化。这表示酒店的房间地图 JLabels声明:Java 如何在单击netbeans时设置多个jlabel的颜色?,java,swing,netbeans,jlabel,Java,Swing,Netbeans,Jlabel,我在一个JPanel上有多个JLabel。当我单击JLabel时,背景变为绿色 我想一次只做一个绿色标签。例如,如果单击JLabel1,它必须变为绿色。如果单击另一个JLabel2,JLabel1必须变为红色,JLabel2必须变为绿色 我有很多JLabel,为每个人举办活动是没有效率的。我找了很多,但什么也没找到。我正在使用Netbeans 8.1 jlabel被声明和初始化。这表示酒店的房间地图 JLabels声明: JLabel p401,p402,p403,phol,a301,a302
JLabel p401,p402,p403,phol,a301,a302,a303,a304,a305,a306,ahol;
JLabel d201,d202,d203,d204,d205,d206,d207,d208,d209,d210,dhol;
JLabel r10,r11,r12,r13,r14,r15,r16,r17,r18,r19;
JLabel r20,r21,r22,r23,r24,r25,r26,r27,r28,r29;
JLabel r30,r31,r32,r33,r34,r35,r36,r37,r38,r39;
JLabel r40,r41,r42,r43,r44,r45,r46,r47,r48,r49;
JLabel r50,r51,r52,r53,r54,r55,r56,r57,r58,r59;
转绿功能:
public void click(JLabel l)
{
l.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
l.setOpaque(true);
l.setBackground(Color.GREEN);
System.out.println(l.getText());
getCamId(l.getText());
cam.setText(String.valueOf(idCam));
}
});
}
ArrayList
李>
ArrayList
以及包含所有标签的JPanel容器中myLabel.setOpaque(true)
将所有JLabel设置为不透明,以便显示其背景色setBackground(Color.red)
来将所有标签的红色都变成红色JLabel selectedLabel=(JLabel)e.getSource()
来获取按下的JLabelsetBackground(…)
将所选JLabel的背景色更改为color.GREENimport java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
@SuppressWarnings("serial")
public class LabelGrid extends JPanel {
// number of columns in the "hallways"
private static final int COLUMNS = 10;
// colors of the current selection and the previous selection
public static final Color PREVIOUS_SELECTION_COLOR = Color.RED;
public static final Color CURRENT_SELECTION_COLOR = Color.GREEN;
// Strings for the rooms.
private String[] pRooms = { "p401", "p402", "p403", "phol" };
private String[] aRooms = { "a301", "a302", "a303", "a304", "a305", "a306", "ahol" };
private String[] dRooms = { "d201", "d202", "d203", "d204", "d205", "d206", "d207", "d208", "d209", "d210", "dhol" };
private String[] rRooms = {
"r10", "r11", "r12", "r13", "r14", "r15", "r16", "r17", "r18", "r19", "r20", "r21",
"r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", "r32", "r33", "r34", "r35", "r36",
"r37", "r38", "r39", "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47", "r48", "r49", "r50", "r51",
"r52", "r53", "r54", "r55", "r56", "r57", "r58", "r59" };
// array of array, just to simplify
private String[][] allRooms = {
pRooms, aRooms, dRooms, rRooms
};
// previously selected JLabel. This will be colored RED
private JLabel previousSelectedLabel = null;
// ArrayList to hold **all** JLabels
private List<JLabel> labelList = new ArrayList<>();
public LabelGrid() {
// the MouseListener:
MyMouse myMouse = new MyMouse();
// layout for the overall GUI
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
// go through the array of arrays
for (String[] strings : allRooms) {
// create a JPanel to hold each "hallway" of JLabels
JPanel container = new JPanel(new GridLayout(0, COLUMNS, 5, 5));
container.setBorder(BorderFactory.createLineBorder(Color.blue));
// iterate through the Strings in the 2nd dimension of our 2D String array
for (String text : strings) {
// create a JLabel with the String
JLabel label = new JLabel(text, SwingConstants.CENTER);
// make it bigger
label.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
// make it opaque
label.setOpaque(true);
// add the mouse listenr
label.addMouseListener(myMouse);
// add it to the arraylist
labelList.add(label);
// add it to the container JPanel
container.add(label);
}
// add the container JPanel to the GUI
add(container);
}
}
private class MyMouse extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
// go through all the JLabels clearing all colors
for (JLabel lbl : labelList) {
lbl.setBackground(null); // clear labels
}
// color the previously selected JLabel to RED
if (previousSelectedLabel != null) {
previousSelectedLabel.setBackground(PREVIOUS_SELECTION_COLOR);
}
// get currently selected JLabel
JLabel label = (JLabel) e.getSource();
// set it to green
label.setBackground(CURRENT_SELECTION_COLOR);
// make it now the previously selected label.
previousSelectedLabel = label;
}
}
private static void createAndShowGui() {
JFrame frame = new JFrame("LabelGrid");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new LabelGrid());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
createAndShowGui();
});
}
}
导入java.awt.Color;
导入java.awt.GridLayout;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.util.ArrayList;
导入java.util.List;
导入javax.swing.*;
@抑制警告(“串行”)
公共类LabelGrid扩展了JPanel{
//“走廊”中的柱数
私有静态final int COLUMNS=10;
//当前选择和上一选择的颜色
公共静态最终颜色上一个\u选择\u颜色=Color.RED;
公共静态最终颜色当前\u选择\u颜色=Color.GREEN;
//房间的绳子。
私有字符串[]pRooms={“p401”、“p402”、“p403”、“phol”};
私有字符串[]aRooms={“a301”、“a302”、“a303”、“a304”、“a305”、“a306”、“ahol”};
私有字符串[]dRooms={“d201”、“d202”、“d203”、“d204”、“d205”、“d206”、“d207”、“d208”、“d209”、“d210”、“dhol”};
私有字符串[]rooms={
“r10”、“r11”、“r12”、“r13”、“r14”、“r15”、“r16”、“r17”、“r18”、“r19”、“r20”、“r21”,
“r22”,“r23”,“r24”,“r25”,“r26”,“r27”,“r28”,“r29”,“r30”,“r31”,“r32”,“r33”,“r34”,“r35”,“r36”,
“r37”,“r38”,“r39”,“r40”,“r41”,“r42”,“r43”,“r44”,“r45”,“r46”,“r47”,“r48”,“r49”,“r50”,“r51”,
“r52”、“r53”、“r54”、“r55”、“r56”、“r57”、“r58”、“r59”};
//数组的数组,只是为了简化
专用字符串[][]所有房间={
pRooms、Aroms、Droom、Rooms
};
//以前选择的JLabel。此标签将显示为红色
private JLabel previousSelectedLabel=null;
//要保存**所有**jLabel的ArrayList
私有列表标签列表=新的ArrayList();
公共LabelGrid(){
//鼠标听者:
MyMouse MyMouse=新建MyMouse();
//整个GUI的布局
setLayout(新的BoxLayout(这是BoxLayout.PAGE_轴));
//遍历数组的数组
for(字符串[]字符串:所有房间){
//创建一个JPanel来容纳JLabel的每个“走廊”
JPanel容器=新的JPanel(新的GridLayout(0,列,5,5));
container.setboorder(BorderFactory.createLineBorder(Color.blue));
//在2D字符串数组的第二维中迭代字符串
用于(字符串文本:字符串){
//使用字符串创建JLabel
JLabel label=新的JLabel(文本,SwingConstants.CENTER);
//把它弄大点
label.setboorder(BorderFactory.createEmptyBorder(5,5,5,5));
//让它不透明
label.set不透明(true);
//添加鼠标列表
label.addMouseListener(myMouse);
//将其添加到arraylist
标签列表。添加(标签);
//将其添加到容器JPanel中
容器。添加(标签);
}
//将容器JPanel添加到GUI
添加(容器);
}
}
私有类MyMouse扩展了MouseAdapter{
@凌驾
公共无效鼠标按下(MouseEvent e){
//检查所有标签,清除所有颜色
用于(JLabel lbl:labelList){
lbl.setBackground(null);//清除标签
}
//将先前选择的JLabel涂成红色
if(先前选择的标签!=null){
先前选择的标签。背景(先前选择的颜色);
}
//获取当前选定的JLabel
JLabel=(JLabel)e.getSource();
//设置为绿色
标签.背景(当前选择的颜色);
//现在将其设置为以前选择的标签。
previousSelectedLabel=标签;
}
}
私有静态void createAndShowGui(){
JFrame frame=新JFrame(“LabelGrid”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);