Java-将JFrame的一半设置为特定颜色
我试图设置JFrame的水平半部分以显示光标所在的颜色。 这就是我目前得到的Java-将JFrame的一半设置为特定颜色,java,swing,colors,jframe,setbackground,Java,Swing,Colors,Jframe,Setbackground,我试图设置JFrame的水平半部分以显示光标所在的颜色。 这就是我目前得到的 enter code here package finalproject; import java.awt.Canvas; import javax.swing.JFrame; import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.Color; import java.awt.MouseInfo; import java
enter code here
package finalproject;
import java.awt.Canvas;
import javax.swing.JFrame;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.awt.PointerInfo;
import javax.swing.JLabel;
import javax.swing.*;
import java.awt.event.MouseMotionListener;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.*;
public class FinalProject {
public static void main(String[] args) throws AWTException {
JFrame frame = new JFrame();
JLabel rgbLabel = new JLabel();
rgbLabel.setVerticalAlignment(SwingConstants.NORTH);
rgbLabel.setHorizontalAlignment(SwingConstants.CENTER);
frame.setLocationRelativeTo(null);
frame.add(rgbLabel);
rgbLabel.setAlignmentX(50);
rgbLabel.setAlignmentY(10);
rgbLabel.setVisible(true);
frame.setLocation(650, 350);
frame.setVisible(true);
frame.pack();
frame.setTitle(display.TITLE);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(display.WIDTH, display.HEIGHT);
frame.setResizable(true);
frame.setVisible(true);
while (true){
PointerInfo cursorLocation = MouseInfo.getPointerInfo();
Point position = cursorLocation.getLocation();
int x = (int)position.getX();
int y = (int)position.getY();
Robot robot = new Robot();
Color pixelColor = robot.getPixelColor(x, y);
int colorRed = pixelColor.getRed();
int colorGreen = pixelColor.getGreen();
int colorBlue = pixelColor.getBlue();
rgbLabel.setText("Red: " + colorRed + " Green: " + colorGreen + " Blue: " + colorBlue + "\n" );
}
}
public static class display {
public static final int WIDTH = 250;
public static final int HEIGHT = 135;
public static final String TITLE = "Colorblind Assistant";
}
}
我知道推杆
frame.getContantPane().setBackground(pixelColor);
在while循环下,将整个帧更改为该颜色,但我只需要帧的下半部分为该颜色
我们将非常感谢您的帮助。
谢谢。- 使用鼠标侦听器,而不是将绑定Swing事件线程的
while(true)
- 将所有代码从main方法中取出并放入适当的类中。主方法除了启动程序外,不应该做任何事情
- 让您的JFrame在GridLayout中容纳两个JPanel,并在其中一个JPanel的背景中由MouseListener设置
喷漆方法(例如,延伸框架)在框架的一半上绘制一个彩色框。背景色在“清除”期间填充整个图形区域,并在子对象在其上渲染之前完成。有关帮助信息,请参阅查看;)