我的程序有这个问题,我似乎无法弄清楚它为什么会发生。应该发生的是,当您在下面的输入区域中输入某些内容时,它应该将其放在黑线所在的位置,该黑线实际上是一个文本区域框。通常它可以工作,除了当我将可编辑设置为 false 并将换行设置为 true 时,就会发生这种情况,并且尺寸应该在整个面板上延伸到图像。我已经把相关代码放在下面。我已经绞尽脑汁好几个小时了,需要一个新的视角。
private JTextArea message = new JTextArea(5,20);
private JLabel date = new JLabel();
private ImageIcon img = new ImageIcon(getClass().getResource("/assignment1/img/silhouette.png"));
private JLabel ImageLabel = new JLabel();
public MessagePanel(String pmessage, Date timestamp) {
this.setLayout(new GridBagLayout());
this.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
this.setPreferredSize(new Dimension(550,150));
ImageLabel.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
message.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0)));
ImageLabel.setIcon(img);
message.setEditable(false);
message.append(pmessage);
message.setLineWrap(true);
message.setWrapStyleWord(true);
message.setCaretPosition(message.getDocument().getLength());
//message.setText(pmessage);
message.setPreferredSize(new Dimension(400,100));
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
date.setText(f.format(timestamp));
GridBagConstraints messageConst = new GridBagConstraints();
messageConst.gridx = 0;
messageConst.gridy = 0;
messageConst.fill = GridBagConstraints.HORIZONTAL;
//messageConst.anchor = java.awt.GridBagConstraints.NORTHWEST;
messageConst.insets = new Insets(12, 83, 0, 0);
GridBagConstraints iconConst = new GridBagConstraints();
iconConst.gridx = 1;
iconConst.gridy = 0;
iconConst.anchor = java.awt.GridBagConstraints.NORTHWEST;
iconConst.insets = new Insets(49, 425, 0, 11);
GridBagConstraints dateConst = new GridBagConstraints();
dateConst.gridx = 0;
dateConst.gridy = 1;
dateConst.gridwidth = 2;
dateConst.ipadx = 70;
dateConst.anchor = GridBagConstraints.NORTHWEST;
dateConst.insets = new Insets(6, 460,0, 11);
this.add(message,messageConst);
this.add(date,dateConst);
this.add(ImageLabel,iconConst);
}