Вот код для моего GUI
Метод, с которым у меня возникла проблема с loggedInView. Другие методы работают правильно.
Похоже, что JScrollPAne
появляется над панелью, которую он должен содержать. Таким образом, любой элемент на Панели не виден, пока я не начну прокручивать ScrollPAne
, после чего он станет видимым.
public class test1 {
private JFrame frame;
private final JPanel statePanel = new JPanel();
private JPanel panel_1;
private JButton btnLogIn;
private JButton btnSignUp_1;
private JPanel panel_3;
private JTextField username;
private JPasswordField passwordField;
private JTextField pseudo;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
test1 window = new test1();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public test1() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.getContentPane().setBackground(Color.GRAY);
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel lblDearFriend = new JLabel("Dear Friend");
lblDearFriend.setFont(new Font("Purisa", Font.BOLD, 12));
lblDearFriend.setBounds(175, 10, 113, 15);
frame.getContentPane().add(lblDearFriend);
statePanel.setBackground(Color.RED);
statePanel.setBounds(346, 0, 104, 25);
frame.getContentPane().add(statePanel);
panel_1 = new JPanel();
panel_1.setBounds(0, 26, 450, 244);
entrypointview(panel_1);
frame.getContentPane().add(panel_1);
panel_1.setLayout(null);
/*
JPanel panel_2 = new JPanel();
panel_2.setBorder(new LineBorder(new Color(0, 0, 0), 3, true));
panel_2.setBounds(0, 0, 103, 244);
panel_1.add(panel_2);
panel_2.setLayout(null);
panel_3 = new JPanel();
panel_3.setBorder(new LineBorder(new Color(0, 0, 0), 2, true));
panel_3.setBounds(104, 0, 346, 244);
panel_1.add(panel_3);
*/
}
public void entrypointview(JPanel panel)
{
panel.setLayout(null);
btnLogIn=new JButton("Log In");
btnLogIn.setBounds(177, 80, 77, 25);
btnLogIn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panel.removeAll();
panel.repaint();
frame.getContentPane().remove(panel);
viewLogin(panel);
//panel.validate();
panel.repaint();
panel.updateUI();
frame.getContentPane().add(panel);
}
});
panel.add(btnLogIn);
btnSignUp_1 = new JButton("Sign Up");
btnSignUp_1.setBounds(163, 117, 117, 25);
btnSignUp_1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panel.removeAll();
panel.repaint();
frame.getContentPane().remove(panel);
viewSignup(panel);
//panel.validate();
panel.repaint();
panel.updateUI();
frame.getContentPane().add(panel);
}
});
panel.add(btnSignUp_1);
}
public void viewSignup(JPanel panel)
{
username = new JTextField();
username.setBounds(158, 48, 114, 19);
panel.add(username);
username.setColumns(10);
pseudo = new JTextField();
pseudo.setBounds(158, 110, 139, 19);
panel.add(pseudo);
pseudo.setColumns(10);
JLabel lblUsername = new JLabel("Username");
lblUsername.setBounds(55, 50, 72, 15);
panel.add(lblUsername);
passwordField = new JPasswordField();
passwordField.setBounds(158, 79, 127, 19);
panel.add(passwordField);
JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(65, 77, 70, 15);
panel.add(lblPassword);
JLabel lblSessionPseudo = new JLabel("Session Pseudo");
lblSessionPseudo.setBounds(34, 104, 113, 15);
panel.add(lblSessionPseudo);
JButton btnSignUp = new JButton("Sign Up");
btnSignUp.setBounds(158, 160, 117, 25);
panel.add(btnSignUp);
}
public void viewLogin(JPanel panel)
{
panel.setLayout(null);
username = new JTextField();
username.setBounds(158, 48, 114, 19);
panel.add(username);
username.setColumns(10);
pseudo = new JTextField();
pseudo.setBounds(158, 110, 139, 19);
panel.add(pseudo);
pseudo.setColumns(10);
JLabel lblUsername = new JLabel("Username");
lblUsername.setBounds(55, 50, 72, 15);
panel.add(lblUsername);
passwordField = new JPasswordField();
passwordField.setBounds(158, 79, 127, 19);
panel.add(passwordField);
JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(65, 77, 70, 15);
panel.add(lblPassword);
JLabel lblSessionPseudo = new JLabel("Session Pseudo");
lblSessionPseudo.setBounds(34, 104, 113, 15);
panel.add(lblSessionPseudo);
JButton btnLogin = new JButton("Log In");
btnLogin.setBounds(158, 160, 117, 25);
btnLogin.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panel.removeAll();
panel.repaint();
frame.getContentPane().remove(panel);
loggedInView(panel);
panel.validate();
panel.repaint();
panel.updateUI();
frame.getContentPane().add(panel);
}
});
panel.add(btnLogin);
}
public boolean verifylogin(String username,String password)
{
return true;
}
public boolean challengepseudo(String pseudo)
{
return true;
}
public boolean challengeusername(String username)
{
return true;
}
public void loggedInView(JPanel panel)
{
statePanel.setBackground(Color.GREEN);
//panel.setLayout(null);
JPanel test=new JPanel(new GridLayout(0,1));
test.setBorder(new LineBorder(new Color(0, 0, 0), 3, true));
test.setBounds(0, 0, 100, 240);
test=onlineUserToLabel(test,new CurrentUser());
//panel.add(test);
test.setPreferredSize(new Dimension(100,500));
JScrollPane scroller = new JScrollPane(test);
scroller.setSize(120, 240);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//scroller.setBorder(null);
//panel_1.add(panel_2);
panel.add(scroller);
JPanel panel_3 = new JPanel(new GridLayout(0,1));
//panel_3.setLayout(new BoxLayout(panel_3,BoxLayout.Y_AXIS));
panel_3.setBorder(new LineBorder(new Color(0, 0, 0), 2, true));
panel_3.setBounds(120, 0, 350, 244);
ArrayList <AbstractMessage>list=new ArrayList <AbstractMessage>();
for( int j=0;j<10;j++)
{
list.add(new TextMessage("mike", "none", new Date(), "Hello World"));
list.add(new TextMessage("none", "mike", new Date(), "Hey!"));
}
panel_3=messagesToPanel(panel_3,list,new CurrentUser());
/*
panel_3.add(messageToPanel(new TextMessage("mike", "none", new Date(), "Hello World"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("none", "mike", new Date(), "Hey!"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("mike", "none", new Date(), "Hello World"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("none", "mike", new Date(), "Hey!"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("mike", "none", new Date(), "Hello World"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("none", "mike", new Date(), "Hey!"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("mike", "none", new Date(), "Hello World"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("none", "mike", new Date(), "Hey!"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("mike", "none", new Date(), "Hello World"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("none", "mike", new Date(), "Hey!"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("mike", "none", new Date(), "Hello World"),new CurrentUser()));
panel_3.add(messageToPanel(new TextMessage("none", "mike", new Date(), "Hey!"),new CurrentUser()));
*/
JScrollPane scroller2 = new JScrollPane(panel_3);
scroller2.setSize(330, 200);
//scroller.setLocation(108, 12);
scroller2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//scroller2.setLocation(100, 20);
scroller2.setBorder(null);
scroller2.setBounds(120, 0, 330, 200);
JScrollBar vertical2 = scroller2.getVerticalScrollBar();
vertical2.setMaximum(list.size()*40);
vertical2.setValue(list.size()*40);
panel.add(scroller2);
}
public JPanel messageToPanel(AbstractMessage am,AbstractUserInfo user)
{
JPanel messagePanel=null;
switch(am.getType()) {
case Text:
messagePanel= new JPanel();
messagePanel.setPreferredSize(new Dimension(350,40));
if(user.getUserid().equals(am.getSenderid()))
{messagePanel.setBackground(Color.BLUE);}
else {
messagePanel.setBackground(Color.RED);
}
messagePanel.add(new JLabel(AbstractMessage.getTextMessage(am).getText_content()));
break;
}
return messagePanel;
}
public JPanel onlineUserToLabel(JPanel panel,AbstractUserInfo a)
{
//panel.add(BorderLayout.CENTER, scroller);
for (int i=0; i<30; i++) {
JLabel lab = new JLabel(a.getPseudo().concat(" (").concat(a.getUserid().concat(") ")));
lab.setBounds(0, i*20, 100, 20);
panel.add(lab);
}
return panel;
}
public JPanel messagesToPanel(JPanel panel,ArrayList<AbstractMessage> a,AbstractUserInfo user)
{
//panel.add(BorderLayout.CENTER, scroller);
int i=0;
for( AbstractMessage am :a)
{
JPanel mP=messageToPanel(am,user);
mP.setBounds(0,40*i,350,40);
i++;
panel.add(mP);
}
return panel;
}
}