Javaでデスクトップ用の短文メモを作りたいと思っているのですが、ある画像の上に、JTextFieldを置きたいと思っているのですが、なかなか上手く行きません。(自分は、画像がそのままフレームになっている場所に、JPanelでJTextFieldを置こうとしてたのですが、うまくいかず)
なので、それが実現できるようなコードを教えてほしいです。(参考にしたいと思います)
よろしくお願いします
Java
1MakeWindow.java 2 public void actionPerformed(ActionEvent e){ 3 // 選択されたときの処理を定義 4 TextBox t = new TextBox(); 5 t.makeImageWindow("aaa.png"); 6 7 8 } 9//上のように呼び出して、 10TextBox.Java 11 12import java.awt.Color; 13import java.awt.Container; 14import java.awt.Graphics; 15import java.awt.Image; 16import java.awt.event.MouseEvent; 17import java.awt.event.MouseListener; 18 19import javax.swing.ImageIcon; 20import javax.swing.JFrame; 21import javax.swing.JPanel; 22import javax.swing.JTextField; 23 24public class TextBox extends JPanel implements MouseListener{ 25 26 // マウスリスナのメソッドを定義 27 public void mouseClicked(MouseEvent e){ 28 29 } 30 public void mousePressed(MouseEvent e){ 31 32 } 33 public void mouseReleased(MouseEvent e){ 34 35 } 36 public void mouseEntered(MouseEvent e){ 37 38 } 39 public void mouseExited(MouseEvent e){ 40 41 } 42 43Canvas canvas = null; 44Container contentPane = null; 45 46 47@SuppressWarnings("deprecation") 48public JFrame makeImageWindow(String imagePath){ 49 JFrame frame1 = new JFrame("テスト"); 50 TextBox panel1 = new TextBox(); 51 JTextField text1 = new JTextField(5); 52 53 54 frame1.getContentPane().add(panel1); 55 frame1.setLocation(480,185); 56 frame1.setSize(200,200); 57 58 59 //panel1.setBackground(new Color(0,0,0,0)); 60 panel1.setOpaque(false);//パネルを透明に 61 panel1.show(); 62 panel1.add(text1); 63 64 65 text1.setOpaque(false);//テキストフィールドを透明に 66 67 68 frame1 = viewImage(frame1,imagePath); 69 return frame1; 70 } 71 72@SuppressWarnings("deprecation") 73public JFrame viewImage(JFrame frame,String imagePath){ 74 75 ImageIcon icon = new ImageIcon(imagePath); 76 77 frame.setUndecorated(true);//枠を撤去 78 frame.setBackground(new Color(0,0,0,0));//背景を透明に 79 80 frame.show(); 81 82 Image image = icon.getImage(); 83 84 contentPane = frame.getContentPane(); 85 if(canvas == null){ 86 canvas = new Canvas(image); 87 contentPane.add(canvas); 88 frame.setVisible(true); 89 } 90 else{ 91 canvas.image = image; 92 canvas.repaint(); 93 } 94 return frame; 95 } 96 97private class Canvas extends JPanel{ 98 private static final long serialVersionUID = 1L; 99 private Image image = null; 100 public Canvas(Image image){ 101 super(); 102 this.image = image; 103 } 104 public void paintComponent(Graphics g){ 105 if(image == null) return; 106 g.drawImage(image,0,0,this); 107 } 108 } 109} 110
追記:今は、JTextFieldを中心に配置し、普通にJTextFieldに文字が入力できるようにしたいです。問題点は、JTextFieldを中心に配置できない事と、ひらがなを入力するとパネル?(フレーム?)が白くなってしまう事に困っています。わかりづらくてすみません。
回答1件
あなたの回答
tips
プレビュー