gpt4 book ai didi

java - 突出显示 JList 中的选定值

转载 作者:行者123 更新时间:2023-11-30 06:12:37 25 4
gpt4 key购买 nike

我编写了一个 java 程序来绘制一个矩形,并使用 java 列表中颜色中选定的颜色填充它,它的工作非常好,只是当我单击它时选定的值不会突出显示。

但是,我可以使用箭头键上下移动,但我不知道自己在哪里。

我的Java代码:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;
import java.util.HashMap;
import javax.swing.*;

import javax.swing.event.ListSelectionListener;

public class Test extends JApplet {

private JList list;
private String[] colors = {"pink","lightGreen","orange","lightRed"}
private HashMap<String, Color> colorsMap= new HashMap<>();

public Test(){

setLayout(new FlowLayout());

colorsMap.put("pink",Color.PINK);
colorsMap.put("lightGreen",new Color(202,230,147));
colorsMap.put("orange",Color.ORANGE);
colorsMap.put("lightRed",new Color(255,144,133));

list = new JList(colors);
list.setVisibleRowCount(2);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(new JScrollPane(list));

list.addListSelectionListener(
new ListSelectionListener(){
public void valueChanged(ListSelectionEvent event){
getContentPane().setFocusable(true);
repaint();
}
}
);

}

public void paint(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

int x = 5;
int y = 110;

g2.setPaint(colorsMap.get(list.getSelectedValue()));
g2.fill(new Rectangle2D.Double(x, y, 490, 360));

}

public static void main(String s[]) {
JFrame f = new JFrame("Colors");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JApplet applet = new Test();
f.add(applet);
f.pack();
f.setSize(new Dimension(500, 500));
f.setVisible(true);

}
}

最佳答案

public void paint(Graphics g) {
// ..

应该是:

public void paint(Graphics g) {
super.paint(g);
// ..

调用 super 方法是在自定义绘制组件中实现绘制链的正确方法。

关于java - 突出显示 JList 中的选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49903767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com