gpt4 book ai didi

Java:如何比较 Dimension 对象

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

我正在尝试将 JButton 的首选大小设置为相同的值。基本上有两个按钮,根据哪个按钮较大,我想将另一个按钮设置为该大小。

问题是,我似乎无法获得正确的操作数来比较维度对象。我将在下面添加我的代码,但我知道 if 语句不起作用。如果有人能很快告诉我,那就太好了。

ballotNameButton = new JButton("<html><center>Edit<br>Ballot Name</center></html>");
addOfficeButton = new JButton("<html><center>Add<br>Office</center></html>");
Dimension bnbSize = ballotNameButton.getPreferredSize();
Dimension aobSize = addOfficeButton.getPreferredSize();
if(bnbSize > aobSize){
addOfficeButton.setPreferredSize(bnbSize);
}else if(aobSize > bnbSize){
ballotNameButton.setPreferredSize(aobSize);
}

无论如何,只是一个简单的问题。尝试用各种方式谷歌搜索,但找不到答案,我确信我的措​​辞有问题,但我们将不胜感激。

最佳答案

您不能使用><像您想要的那样比较大多数对象。某些对象实现 Comparable接口(interface),可以与 compareTo() 进行比较方法。如果这是java.awt.Dimension ,它没有实现Comparable ,因此您必须创建一个自定义 Comparator并定义您要比较的字段。

例如,如果您想根据面积比较对象,代码将如下所示:

class DimensionComparator implements Comparator<Dimension> {
private static double area(Dimension d) {
return d.getWidth() * d.getHeight();
}

public int compare(Dimension d1, Dimension d2) {
return Double.compare(area(d1), area(d2));
}
}

方法compare()应该返回:

  • 1 ,如果d1大于d2
  • 0 ,如果d1等于d2
  • -1 ,如果d1小于 d2

然后您应该在类中创建比较器实例:

private static Comparator<Dimension> dimComparator = new DimensionComparator();

并使用compare()比较对象:

if (dimComparator.compare(bnbSize, aobSize) > 0) {
addOfficeButton.setPreferredSize(bnbSize);
} else if (dimComparator.compare(aobSize, bnbSize) > 0) {
ballotNameButton.setPreferredSize(aobSize);
}

如果您只想比较特定字段(例如高度),只需执行以下操作:

if (bnbSize.getHeight() > aobSize.getHeight()) {
addOfficeButton.setPreferredSize(bnbSize);
} else if (aobSize.getHeight() > bnbSize.getHeight()) {
ballotNameButton.setPreferredSize(aobSize);
}

关于Java:如何比较 Dimension 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29370465/

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