于是按照贴吧某同学的指教,把imageViewer里那个愚蠢的语句改了
于是開心地升級到了V1.1版本
等我先消化下知識再來更新。
關鍵在于面板的setPreferredSize(Dimension d)方法和框架的pack()方法。
========================================================================================
大概就是說,用了布局管理器的話,管理器會根據preferredSize來安排控件大小,用setSize的話不一定會起作用,所以我之前直接改變面板的大小然后pack框架,最后出來的效果是框架高度變成0,大概就是因為preferredSize默認是0。………………對么?
總之,用setPreferredSize才是正確的設定面板大小的方法。
至于pack,就是根據框架內容來重新計算框架大小,似乎是很智能,所以不用想太多。
?
按照我以前的做法,結果就是打開了文件之后按照圖片大小改變框架大小,然后面板就因為布局管理器而自動擴大,但是圖大框架大,它框架還包含邊框啊,于是能用來顯示的地方就小,于是圖就擠到窗口外面了。
現在呢,打開了文件之后我按照圖片大小設置面板大小,這樣面板就擠出去了,然后再調用框架的pack方法,自動按照內容物大小來擴大框架,就不用擔心邊框的問題了,于是就搞定了。
?
不過還有一個問題搞不懂。
public void actionPerformed(ActionEvent e) {Image img;if ((img = getImage()) != null) {parent.getPanel().setImage(img);parent.getPanel().setPreferredSize(new Dimension(img.getWidth(parent), img.getHeight(parent)));parent.pack();} else {return;} }我之前在setImage之后還加了一句repaint(),然后發現注釋掉也不影響顯示,就刪掉了。
于是現在我只是用setImage方法改變了面板的屬性,就是一個圖片對象的引用,那它到底是什么時候重新繪制內容的?
請自行腦內配上少年包青天的那個懸疑BGM。
我找來了,不謝。
轉載于:https://www.cnblogs.com/chihane/p/3502808.html
總結
以上是生活随笔為你收集整理的于是按照贴吧某同学的指教,把imageViewer里那个愚蠢的语句改了的全部內容,希望文章能夠幫你解決所遇到的問題。