gpt4 book ai didi

Java JComboBox 重绘错误

转载 作者:行者123 更新时间:2023-12-01 12:51:37 24 4
gpt4 key购买 nike

所以我在我的新程序中使用 JComboBox,但由于某种原因,每次选择某些内容时它都会重新绘制。我不希望它在选择某些内容时重新绘制整个程序,而只是指定指定的框。请参阅下面的代码。这里的第一部分来自包含面板的类。首先,这是 JComboBox 的声明以及它们在选择后编辑的标签:

private JComboBox crewview = new JComboBox(SpaceGame.stuffselector);
private JComboBox resourceview = new JComboBox(SpaceGame.stuffselector1);
private JLabel crewmember, crewmember1, crewmember2;
private JLabel resourcev, resourcev1, resourcev2;

其中 stuff 选择器是数字 1 到 10 的数组

我的绘制方法包含这些,因为除非我在这里有这些,否则它不起作用:

    resourceview.setLocation(400,80);
resourcev.setLocation(455,85);
resourcev1.setLocation(455,95);
resourcev2.setLocation(455,105);

crewview.setLocation(400, 20);
crewmember.setLocation(455,25);
crewmember1.setLocation(455,35);
crewmember2.setLocation(455,45);

这是我的 Action 监听器:

    private  class crewviewListener implements ActionListener{
public void actionPerformed(ActionEvent e){
lifeForm temp = SpaceGame.playership.getCrewat(crewview.getSelectedIndex());
crewmember.setText("Name: " + temp.getName()); //set the text to the crew member
crewmember1.setText("Race: " + temp.getRace());
crewmember2.setText("Worth: " + temp.getWorth());
}
}
private class resourceviewListener implements ActionListener{
public void actionPerformed(ActionEvent e1){
Resource temp1 = SpaceGame.playership.getResourceat(resourceview.getSelectedIndex());
resourcev.setText("Name: " + temp1.getName()); //set the text to the crew member
resourcev1.setText("Worth: " + temp1.getWorth());
resourcev2.setText("Amount: " + temp1.getAmount());
}
}

因此,正如您在阅读代码时可能会看到的那样,我试图让它仅在选择框中的内容时更新 JLable,而不是重新绘制所有内容。

最佳答案

JLabels 默认情况下是非透明的。这意味着每当您更改标签中的文本时,标签的背景也必须重新绘制。因此包含标签的面板也将被重新绘制。

Swing 通常会确定要重新绘制的面板的剪切区域。也就是说,包含 3 个标签的矩形区域将被重新绘制,而不是整个面板。

发布SSCCE如果您需要更多帮助,这说明了问题。

关于Java JComboBox 重绘错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186733/

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