前提・実現したいこと
グッズの管理ツールを作っています。
こんな感じのレイアウトにしたいです。
発生している問題・エラーメッセージ
以下の画像のように長いタイトル等だと折り返しされず、全部表示することができません。
該当のソースコード
Java
1package goods; 2 3import java.awt.Color; 4import java.awt.Dimension; 5import java.awt.Graphics2D; 6import java.awt.Toolkit; 7import java.awt.image.AreaAveragingScaleFilter; 8import java.awt.image.BufferedImage; 9import java.awt.image.FilteredImageSource; 10import java.awt.image.ImageFilter; 11import java.awt.image.ImageProducer; 12import java.io.File; 13import java.io.IOException; 14 15import javax.imageio.ImageIO; 16import javax.swing.BoxLayout; 17import javax.swing.ImageIcon; 18import javax.swing.JLabel; 19import javax.swing.JPanel; 20import javax.swing.JTextArea; 21 22public class Goods extends JPanel { 23 Goods(String imagePass, String title, String goodsName, String person) throws IOException { 24 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 25 JLabel photo; 26 if (imagePass == null) { 27 photo = new JLabel(); 28 } else { 29 System.out.println(imagePass); 30 photo = new JLabel(new ImageIcon(scaleImage(new File(imagePass), 0.5))); 31 } 32 photo.setOpaque(true); 33 photo.setBackground(Color.WHITE); 34 photo.setHorizontalAlignment(JLabel.CENTER); 35 add(photo); 36 JTextArea titleLabel = new JTextArea(title); 37 titleLabel.setMaximumSize(new Dimension( 200, 20)); 38 titleLabel.setEditable(false); 39 titleLabel.setLineWrap(true); 40 add(titleLabel); 41 JTextArea goodsNameLabel = new JTextArea(goodsName); 42 goodsNameLabel.setMaximumSize(new Dimension( 200, 20)); 43 goodsNameLabel.setEditable(false); 44 goodsNameLabel.setLineWrap(true); 45 add(goodsNameLabel); 46 JTextArea personLabel = new JTextArea(person); 47 personLabel.setMaximumSize(new Dimension( 200, 20)); 48 personLabel.setEditable(false); 49 personLabel.setLineWrap(true); 50 add(personLabel); 51 setOpaque(false); 52 } 53 54 public static BufferedImage scaleImage(File in, double scale) throws IOException { 55 BufferedImage org = ImageIO.read(in); 56 ImageFilter filter = new AreaAveragingScaleFilter((int) (org.getWidth() * scale), 57 (int) (org.getHeight() * scale)); 58 ImageProducer p = new FilteredImageSource(org.getSource(), filter); 59 java.awt.Image dstImage = Toolkit.getDefaultToolkit().createImage(p); 60 BufferedImage dst = new BufferedImage(dstImage.getWidth(null), dstImage.getHeight(null), 61 BufferedImage.TYPE_INT_RGB); 62 Graphics2D g = dst.createGraphics(); 63 g.drawImage(dstImage, 0, 0, null); 64 g.dispose(); 65 return dst; 66 } 67} 68
試したこと
以下のサイトを参考にしました。
JLabelの文字列を折り返し - Java Swing Tips
補足情報(FW/ツールのバージョンなど)
- Java version "1.8.0_40"
- eclipse Version: Mars.1 Release (4.5.1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/26 17:18
2018/06/28 12:47
退会済みユーザー
2018/07/01 04:17