private void msgAddToMsgPanel(String msg,int align){ System.out.println("==========msgAddToMsgPanel==========="+msg); JLabel msgLbl=new JLabel(msg,SwingConstants.CENTER); msgLbl.setForeground(Color.decode("#61565A")); msgLbl.setBackground(Color.decode("#BACCD9")); msgLbl.setSize(50,25); msgLbl.setBorder(BorderFactory.createLineBorder(Color.getColor("#8FB2C9"),2,true)); msgLbl.setOpaque(true);//设置不透明 JPanel itemPanel=new JPanel(); itemPanel.setBackground(Color.WHITE); //将每一条消息所在的面板宽度,和消息面板的面板宽度相同 itemPanel.setPreferredSize(new Dimension(msgPanel.getWidth(),25)); itemPanel.add(msgLbl); //设置左右对齐 FlowLayout layout = (FlowLayout) itemPanel.getLayout(); layout.setAlignment(align); msgPanel.add(itemPanel); //更新界面 msgPanel.updateUI(); }在此基础上添加滑动条
时间: 2024-02-18 19:05:25 浏览: 18
可以使用JScrollPane来包裹msgPanel,这样就可以自动添加滚动条了。具体实现可以参考下面的代码:
```
JScrollPane scrollPane = new JScrollPane(msgPanel);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollPane, BorderLayout.CENTER);
```
这样就可以在msgPanel的高度超过容器高度时显示滚动条了。
相关问题
private void msgAddToMsgPanel(String msg,int align){ System.out.println("==========msgAddToMsgPanel==========="+msg); JLabel msgLbl=new JLabel(msg,SwingConstants.CENTER); msgLbl.setForeground(Color.decode("#61565A")); msgLbl.setBackground(Color.decode("#BACCD9")); msgLbl.setSize(50,25); msgLbl.setBorder(BorderFactory.createLineBorder(Color.getColor("#8FB2C9"),2,true)); msgLbl.setOpaque(true);//设置不透明 JPanel itemPanel=new JPanel(); itemPanel.setBackground(Color.WHITE); //将每一条消息所在的面板宽度,和消息面板的面板宽度相同 itemPanel.setPreferredSize(new Dimension(msgPanel.getWidth(),25)); itemPanel.add(msgLbl); //设置左右对齐 FlowLayout layout = (FlowLayout) itemPanel.getLayout(); layout.setAlignment(align); msgPanel.add(itemPanel); //更新界面 msgPanel.updateUI(); }添加滑动条
可以使用JScrollPane来包裹msgPanel,这样就可以自动添加滚动条了。具体实现可以参考下面的代码:
```
JScrollPane scrollPane = new JScrollPane(msgPanel);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollPane, BorderLayout.CENTER);
```
这样就可以在msgPanel的高度超过容器高度时显示滚动条了。
保留完整的原有功能的基础上,确保滚动条显示为最新的界面private void initMsgPanel(){ msgPanel=new JPanel(); msgPanel.setLayout(new BoxLayout(msgPanel, BoxLayout.Y_AXIS)); msgPanel.setBackground(Color.WHITE); JScrollPane scrollPane = new JScrollPane(msgPanel); scrollPane.setBounds(5,5,370,330); add(scrollPane); } private void msgAddToMsgPanel(String msg,int align){ System.out.println("==========msgAddToMsgPanel==========="+msg); JLabel msgLbl=new JLabel(msg,SwingConstants.CENTER); msgLbl.setForeground(Color.decode("#61565A")); msgLbl.setBackground(Color.decode("#BACCD9")); msgLbl.setSize(50,25); msgLbl.setBorder(BorderFactory.createLineBorder(Color.getColor("#8FB2C9"),2,true)); msgLbl.setOpaque(true);//设置不透明 JPanel itemPanel=new JPanel(); itemPanel.setBackground(Color.WHITE); itemPanel.setPreferredSize(new Dimension(msgPanel.getWidth(),25)); itemPanel.add(msgLbl); FlowLayout layout = (FlowLayout) itemPanel.getLayout(); layout.setAlignment(align); msgPanel.add(itemPanel); msgPanel.updateUI(); }
您可以将滚动条的位置设置为显示最新内容。可以通过以下代码来实现:
scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getMaximum());
在 `msgAddToMsgPanel` 方法中,在 `msgPanel.updateUI()` 之后,添加上述代码,即可实现滚动条一直显示最新内容。
阅读全文