前提
csvファイルを拡張for文を利用して読み込み、中に書かれている内容に応じて描画をするプログラムを書きたいのですが、「描画」ボタンを押しても描画されませんでした。
ちなみにcsvファイルには
四角形 黒 50 50 230 150
塗りつぶし四角形 青 50 50 230 150
塗りつぶし四角形 黄色 110 50 25 150
塗りつぶし四角形 黄色 50 110 230 25
と記載されています。
該当のソースコード
java
1import java.awt.Color; 2import java.awt.Container; 3import java.awt.Graphics; 4import java.io.IOException; 5import java.nio.charset.StandardCharsets; 6import java.nio.file.Files; 7import java.nio.file.Path; 8import java.nio.file.Paths; 9import java.util.List; 10import javax.swing.JButton; 11import javax.swing.JFrame; 12import javax.swing.JPanel; 13import javax.swing.JTextField; 14import javax.swing.WindowConstants; 15import java.awt.BorderLayout; 16import java.awt.FlowLayout; 17import java.awt.event.ActionEvent; 18import java.awt.event.ActionListener; 19 20public class finalReport extends JFrame implements ActionListener{ 21 private JPanel panel1; 22 private JTextField textField1; 23 private JButton button1; 24 private String fileName; 25 public finalReport() { 26 setLayout(new BorderLayout()); 27 panel1 = new JPanel(); 28 textField1 = new JTextField("sec.csv", 10); 29 button1 = new JButton("描画"); 30 button1.addActionListener(this); 31 panel1.setLayout(new FlowLayout()); 32 panel1.add(textField1); 33 panel1.add(button1); 34 Container container = getContentPane(); 35 container.setLayout(new BorderLayout()); 36 add(panel1, BorderLayout.NORTH); 37 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 38 setSize(700, 300); 39 setLocationRelativeTo(null); 40 setVisible(true); 41 } 42 43 class MyPanel extends JPanel { 44 public void paint(Graphics g) { 45 try { 46 Path path = Paths.get(fileName); 47 List<String> list = Files.readAllLines(path, StandardCharsets.UTF_8); 48 for (String s : list) { 49 String[] raw = s.split(","); 50 String shape = raw[0]; 51 String color = raw[1]; 52 int x_axis = Integer.parseInt(raw[2]); 53 int y_axis = Integer.parseInt(raw[3]); 54 int width = Integer.parseInt(raw[4]); 55 int height = Integer.parseInt(raw[5]); 56 if (shape.equals("四角形")) { 57 if (color.equals("黒")) { 58 g.setColor(Color.BLACK); 59 } 60 g.drawRect(x_axis, y_axis, width, height); 61 } else if (shape.equals("塗りつぶし四角形")) { 62 if (color.equals("青")) { 63 g.setColor(Color.BLUE); 64 }else if (color.equals("黄色")) { 65 g.setColor(Color.YELLOW); 66 }g.fillRect(x_axis, y_axis, width, height); 67 } 68 } 69 } catch (IOException e) { 70 e.printStackTrace(); 71 } 72 } 73 } 74 @Override 75 public void actionPerformed(ActionEvent e) { 76 fileName = textField1.getText(); 77 if (fileName.equals("sec.csv")) { 78 MyPanel myPanel = new MyPanel(); 79 add(myPanel, BorderLayout.CENTER); 80 myPanel.repaint(); 81 }} 82 public static void main(String[] args) { 83 new finalReport(); 84 } 85}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー