[英]Java: How to compare Dimension objects
我正在嘗試將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
接口,並且可以與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);
}
Dimension對象具有寬度和高度。 您可以相互比較寬度或高度,但是一次比較兩個尺寸又意味着什么呢? 例如,如果一個是2x1,另一個是1x2,哪個更大? 它們具有相同的面積,但一個較高,另一個較大。
對於您的應用程序,我希望您對高度或寬度感興趣,因此您可以更改if語句以專注於此。 例如:
if (bnbSize.width > aobSizel.width)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.