У меня есть простой JPanel до сих пор и некоторые базовые элементы, такие как строка для отображения, прямоугольник и JButton, все на этой панели. Когда я нажимаю мышью на этой панели, я хочу, чтобы вещи, которые используют собственный цвет «rainbowColor», меняют свой цвет именно на этот цвет (строка и прямоугольник).Изменение атрибута JComponent
int red = 0;
int green = 255;
int blue = 0;
Color rainbowColor = new Color(red, green, blue);
boolean whichColor = true;
if (whichColor) { red = 255; blue = 0; whichColor = false; }
else { red = 0; blue = 255; whichColor = true; }
Мой «ТЕКСТ», кажется, постоянно зеленый, независимо от того, нажимаю ли я панель. По крайней мере, это означает, что код работает в некотором роде. Я до сих пор не понимаю: в коде говорится, что для параметра «whichColor» установлено значение true, поэтому он должен установить «красный» на 255. В этом случае важна только часть «paintComponent {...}». Я действительно не знаю, что я сделал не так, большое спасибо за то, что помог мне!
package game;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Menu extends JPanel {
public void paintComponent(Graphics g) {
int margin = 4;
int red = 0;
int green = 255;
int blue = 0;
Color rainbowColor = new Color(red, green, blue);
boolean whichColor = true;
if (whichColor) { red = 255; blue = 0; whichColor = false; }
else { red = 0; blue = 255; whichColor = true; }
super.paintComponent(g);
Font customFont = new Font("Dialog", Font.BOLD, 20);
g.setFont(customFont);
g.setColor(new Color(0,0,0));
g.drawString("TEXT", 20, 30);
// randomiseColor(randomColor);
g.setColor(rainbowColor);
g.drawString("TEXT", 22, 32);
g.drawRect(margin, margin, getWidth() - margin*2 - 1, getHeight() - margin*2 - 1);
}
}
public static class RandomColorOnClick implements MouseListener {
public void mousePressed(MouseEvent evt) {
Component source = (Component)evt.getSource();
source.repaint();
}
public void mouseClicked(MouseEvent evt) { }
public void mouseReleased(MouseEvent evt) { }
public void mouseEntered(MouseEvent evt) { }
public void mouseExited(MouseEvent evt) { }
}
public static void main(String[] args){
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
RandomColorOnClick colorListener = new RandomColorOnClick();
ButtonHandler listener = new ButtonHandler();
Menu main_text = new Menu();
JPanel main_content = new JPanel();
JFrame main_window = new JFrame("Some random text");
JButton main_exit_button = new JButton("Exit");
main_content.addMouseListener(colorListener);
main_window.setContentPane(main_content);
main_window.setSize(800, 600);
main_window.setLocation(((int)width/2) - 400, ((int)height/2) - 300);
main_window.setVisible(true);
main_window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main_content.setLayout(new BorderLayout());
main_content.add(main_text, BorderLayout.CENTER);
main_exit_button.addActionListener(listener);
}
Извините за мой поздний ответ. Большое спасибо Fast Snail, с вашей помощью я мог это понять – Hydraxia