我使用一個邊界佈局,這似乎是躲在JScrollPane中舉行的JTextPane,這是在該中心。我如何強制中心JScrollPane顯示?BorderLayout的隱藏JPane
package net.bounceme.dur.usenet.swing;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Logger;
import javax.mail.Folder;
import javax.swing.ListModel;
import net.bounceme.dur.usenet.controller.Controller;
import net.bounceme.dur.usenet.controller.MessageBean;
import net.bounceme.dur.usenet.controller.MessagesDefaultListModel;
public class MessageSelect extends javax.swing.JPanel implements Observer {
private static final Logger LOG = Logger.getLogger(MessageSelect.class.getName());
private Controller controller = Controller.getInstance();
private ListModel messages = new MessagesDefaultListModel();
private MessageBean messageBean = new MessageBean();
public MessageSelect() {
controller.addObserver(this);
initComponents();
messageContent.setText("hello world");
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
center = new javax.swing.JScrollPane();
messageContent = new javax.swing.JTextPane();
south = new javax.swing.JPanel();
commentJButton = new javax.swing.JButton();
west = new javax.swing.JScrollPane();
messagesJList = new javax.swing.JList();
setLayout(new java.awt.BorderLayout());
messageContent.setContentType("text/html"); // NOI18N
center.setViewportView(messageContent);
add(center, java.awt.BorderLayout.CENTER);
south.setLayout(new java.awt.BorderLayout());
commentJButton.setText("comment");
commentJButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
commentJButtonActionPerformed(evt);
}
});
south.add(commentJButton, java.awt.BorderLayout.CENTER);
add(south, java.awt.BorderLayout.SOUTH);
messagesJList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
messagesJList.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
messagesJListMouseReleased(evt);
}
});
messagesJList.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
messagesJListKeyReleased(evt);
}
});
west.setViewportView(messagesJList);
add(west, java.awt.BorderLayout.WEST);
}// </editor-fold>
private void commentJButtonActionPerformed(java.awt.event.ActionEvent evt) {
LOG.fine("button clicked" + messageBean);
}
private void messagesJListKeyReleased(java.awt.event.KeyEvent evt) {
userSelectedRow();
}
private void messagesJListMouseReleased(java.awt.event.MouseEvent evt) {
userSelectedRow();
}
// Variables declaration - do not modify
private javax.swing.JScrollPane center;
private javax.swing.JButton commentJButton;
private javax.swing.JTextPane messageContent;
private javax.swing.JList messagesJList;
private javax.swing.JPanel south;
private javax.swing.JScrollPane west;
// End of variables declaration
@Override
@SuppressWarnings("unchecked")
public void update(Observable o, Object arg) {
LOG.fine("trying folder: " + arg);
//Folder folder = null;
try {
Folder folder = (Folder) arg;
messages = new MessagesDefaultListModel(folder);
LOG.fine("how many messages? " + messages.getSize());
messagesJList.setModel(messages);
LOG.fine("loaded messages..");
} catch (Exception e) { //err, class cast exception?
LOG.fine("not a valid folder " + arg);
}
}
private void userSelectedRow() {
messageBean = (MessageBean) messagesJList.getSelectedValue();
LOG.fine(messageBean.toString());
messageContent.setText(messageBean.getContent());
LOG.fine("..gotMessageBean: " + messageBean);
}
}
第一選項卡下允許USENET組的選擇,一些基團更好的表現,其他人。而Android組是獨特的,常規大小的窗口不顯示CENTER JScrollPane的:
但最大化窗口允許中心JScrollPane中正確顯示:
我有沒有問題。確保你在主框架上打電話包(如果你沒有指定尺寸)。如果你得到真正卡住,嘗試設置'scrollPane'的'preferredSize'財產 – MadProgrammer 2012-07-26 04:22:07
是的,我已經試過與JScrollPane的最小尺寸打,但我也來看看首選大小。有時,最大化Java窗口將允許CENTER JScrollPane顯示,但這是100%。 – Thufir 2012-07-26 04:23:50
'BorderLayout'並不關心最大/最小尺寸。在我的測試中,設置'preferredSize'對佈局做了明顯的改變。 – MadProgrammer 2012-07-26 04:28:09