- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Font;
- import java.awt.GraphicsEnvironment;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.io.Serializable;
- import javax.swing.DefaultListCellRenderer;
- import javax.swing.DefaultListModel;
- import javax.swing.JFrame;
- import javax.swing.JList;
- import javax.swing.JScrollPane;
- import javax.swing.JTextField;
- public class testMain
- {
- public testMain()
- {}
- public static void main(String args[])
- {
- class MessageListItemModel implements Serializable
- {
- public static final long serialVersionUID = 0000000000000000001L;
- private String text;
- private Color textColor;
- private Font textFont;
- public MessageListItemModel(String text)
- {
- this.text = text;
- this.textColor = Color.BLUE;
- this.textFont = getFont(2);
- this.text = text;
- }
- public final Color getTextColor() {
- return textColor;
- }
- public final String getText() {
- return text;
- }
- public final Font getTextFont()
- {
- return textFont;
- }
- public Font getFont(int fnt)
- {
- Font font = null;
- switch(fnt)
- {
- case 2:
- font = new Font("Courier", Font.BOLD, 12);
- break;
- }
- return font;
- }
- }
- class MessageListItemView extends DefaultListCellRenderer// implements ListCellRenderer
- {
- public static final long serialVersionUID = 0000000000000000001L;
- public MessageListItemView ()
- {
- }
- // Set the attributes of the
- //class and return a reference
- public Component getListCellRendererComponent( JList list, // datasource
- Object value, // value to display
- int index, // cell index
- boolean iss, // is selected
- boolean chf) // cell has focus?
- {
- // Set the text and color
- setText(((MessageListItemModel)value).getText());
- setForeground(((MessageListItemModel)value).getTextColor());
- setBackground(Color.WHITE);
- setFont(((MessageListItemModel)value).getTextFont());
- setSize(this.getPreferredSize());
- System.out.println("MessageListItemView index:"+index+" has bounds:"+this.getBounds().toString());
- return this;
- }
- }
- class GenericDisplay extends JFrame
- {
- public static final long serialVersionUID = 0000000000000000001L;
- public javax.swing.JList messageList;
- public javax.swing.JScrollPane messageListScrollPane;
- public javax.swing.JTextField inputTextField;
- protected MessageListItemView view;
- public GenericDisplay()
- {
- setComponents();
- setDefaults();
- }
- protected void setDefaults()
- {
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // Maximization
- GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
- /*
- The next line determines if the taskbar (win) is covered
- if unremarked, the task will not be covered by
- the maximized JFRAME.
- */
- setMaximizedBounds(env.getMaximumWindowBounds());
- setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
- pack();
- }
- protected void setComponents()
- {
- getContentPane().setLayout(null);
- inputTextField = new JTextField();
- messageList = new JList(new DefaultListModel());
- //messageList.setPrototypeCellValue(new MessageListItemModel("111111111111111111111111111111111111111111111111111"));
- messageList.setBorder(javax.swing.BorderFactory.createTitledBorder("Chat"));
- view = new MessageListItemView();
- messageList.setCellRenderer(view);
- //messageListModel = new DefaultListModel();
- //messageList.setModel(messageListModel);
- messageList.setVisibleRowCount(21);
- messageListScrollPane = new JScrollPane();
- messageListScrollPane.getViewport().setView(messageList);
- messageList.setPrototypeCellValue(new MessageListItemModel("123-45-6789"));
- messageList.setFixedCellWidth(614);
- getContentPane().setLayout(null);
- messageListScrollPane.setBounds(12,11,614,423);
- inputTextField.setBounds(12,446,614,20);
- getContentPane().add(messageListScrollPane);
- getContentPane().add(inputTextField);
- inputTextField.addKeyListener(
- new KeyListener()
- {
- public void keyPressed( KeyEvent e )
- {
- if (e.getKeyCode() == KeyEvent.VK_ENTER)
- {
- addToModel(inputTextField.getText().trim());
- inputTextField.setText("");
- }
- }
- public void keyTyped( KeyEvent e ){}
- public void keyReleased( KeyEvent e ){}
- }
- );
- }
- public void addToModel(String msg)
- {
- ((DefaultListModel)messageList.getModel()).addElement(new MessageListItemModel(msg));
- System.out.println("Model len:"+((DefaultListModel)messageList.getModel()).getSize());
- int lastIndex = (((DefaultListModel)messageList.getModel()).getSize());
- if (lastIndex > 0)
- {
- System.out.println("Trying to ensure index is visible:"+lastIndex);
- System.out.println("Should only see 1 MessageListItemView");
- messageList.ensureIndexIsVisible(lastIndex);
- }
- }
- }
- GenericDisplay display = new GenericDisplay();
- display.setSize(800,600);
- display.setVisible(true);
- }
- }
