SpringLayout のドキュメントには、Java 1.4 以降で利用可能であると書かれています。私は、Mac OS 10.5 の新しいバージョンにアップグレードできない 7 台の古い Mac を持っているため、せいぜい Java 1.5.0_30 しか持っていません。問題は、Spring レイアウトで動作するアプリがあり、常にこのスタック バック トレースを取得していることです。
Exception in thread "main" java.lang.NullPointerException
at javax.swing.SpringLayout$SpringProxy.getValue(SpringLayout.java:674)
at javax.swing.Spring$CompoundSpring.getValue(Spring.java:420)
at javax.swing.Spring$CompoundSpring.getValue(Spring.java:420)
at javax.swing.SpringLayout.layoutContainer(SpringLayout.java:1004)
at java.awt.Container.layout(Container.java:1401)
at java.awt.Container.doLayout(Container.java:1390)
at java.awt.Container.validateTree(Container.java:1473)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validate(Container.java:1448)
at java.awt.Window.show(Window.java:516)
at java.awt.Component.show(Component.java:1317)
at java.awt.Component.setVisible(Component.java:1270)
解決策、瓶などはありますか?
「コンピュータをアップグレードしてください」などの回答は避けてください
更新: Java に SpringLayout があることを発見しましたが、SOUTH で VERTICAL_LAYOUT を使用することはできません。どうしてか分かりません。
更新 2: Ian の指示に従って、次のコードを実行しましたが、Java 5 ではまだ動作していません。
springLayout.putConstraint(SpringLayout.NORTH, myImage,
Spring.sum(springLayout.getConstraint(SpringLayout.SOUTH, myPanel) ,
Spring.sum(Spring.scale(Spring.minus(springLayout.getConstraint(SpringLayout.HEIGHT, myImage)),0.5f),
Spring.scale(Spring.minus(springLayout.getConstraint(SpringLayout.HEIGHT, myPanel)),0.5f)
)
), SpringLayout.NORTH, myPanel);
更新 3: それを置き換えるspringLayout.getConstraint(SpringLayout.HEIGHT, myImage)
とspringLayout.getConstraints(myImage).getHeight()
、完全に正常に機能しました。:)