Obraz w tle ukrywa wszystkie elementy projektu GUI
Pracuję nad aplikacją GUI, w której użyłem komponentów swing do projektowania GUI. Chcę ustawić obraz tła dla mojego formularza, ale po ustawieniu obrazu nakłada się on na wszystkie komponenty używane do projektowania GUI.
Najpierw mój formularz bez obrazu tła jest pokazany poniżej,
Mój kod do tego jest
Login.javapublic class Login extends JFrame{
public static JFrame myFrame;
public LoginPanel loginPanel;
public Login() throws IOException
{
initilize();
}
public void initilize()throws IOException {
myFrame = new JFrame("Message"){
private Image backgroundImage = ImageIO.read(new File("D:/Sky.jpg"));
public void paint( Graphics g ) {
super.paint(g);
g.drawImage(backgroundImage, 0, 0, null);
}
};
myFrame.setLayout(new BorderLayout());
loginPanel = new LoginPanel();
//Panel
Container c = myFrame.getContentPane();
c.add(loginPanel, BorderLayout.WEST);
myFrame.setSize(300, 150);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
myFrame.setLocationRelativeTo(null);
}
public static void main(String[] arg) {
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
try {
new Login();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
LoginPanel.javapublic class LoginPanel extends JPanel implements ActionListener {
public JLabel user_no=null;
public JLabel password=null;
public JButton btn_login = null;
public JButton btn_newUser = null;
public JTextField usernameField=null;
public JPasswordField passwordField=null;
public static String userNo;
public ArrayList msgList = new ArrayList();
public LoginPanel()
{
initilize();
initConnection();
}
private void initilize() {
Dimension size = getPreferredSize();
size.width = 285;
size.height = 150;
setPreferredSize(size);
setBorder(BorderFactory.createTitledBorder(null, "Login Details", TitledBorder.CENTER, TitledBorder.TOP));
user_no = new JLabel("User No : ");
password = new JLabel("Password : ");
usernameField = new JTextField(14);
passwordField = new JPasswordField(14);
btn_login = new JButton("Login");
btn_newUser = new JButton("New User");
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
//// First column /////////////////////////
gc.anchor = GridBagConstraints.LINE_START;
gc.gridx = 0;
gc.gridy = 0;
add(user_no, gc);
gc.gridx = 0;
gc.gridy = 1;
add(password, gc);
//// Second column
gc.anchor = GridBagConstraints.LINE_START;
gc.gridx = 1;
gc.gridy = 0;
add(usernameField, gc);
gc.gridx = 1;
gc.gridy = 1;
add(passwordField, gc);
// Final row
gc.anchor = GridBagConstraints.FIRST_LINE_START;
gc.gridx = 1;
gc.gridy = 2;
add(btn_login, gc);
gc.anchor = GridBagConstraints.FIRST_LINE_END;
gc.gridx = 1;
gc.gridy = 2;
add(btn_newUser, gc);
}
private void initConnection() {
btn_login.addActionListener(this);
btn_newUser.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btn_login))
{
userNo = usernameField.getText();
String userPwd = passwordField.getText();
System.out.println(userNo+" "+userPwd);
Connection con = ConnectionImpl.getConnection();
try
{
PreparedStatement pstmt;
String sql = "SELECT sender_no,pwd FROM tb_login where sender_no ='"+userNo+"'";
pstmt= con.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
if(rs.next())
{
if(userNo.equalsIgnoreCase(rs.getString(1))&&userPwd.equalsIgnoreCase(rs.getString(2)))
{
System.out.println("Successfull login");
String sql2 = "Select msg from tb_msg where sender_no='"+userNo+"'";
pstmt= con.prepareStatement(sql2);
ResultSet rs2 = pstmt.executeQuery();
while(rs2.next())
{
msgList.add(rs2.getString(1));
}
System.out.println("msgList = "+msgList.size());
Login.myFrame.dispose();
new AddMessage(userNo,msgList);
}
}
}
catch (Exception exp) {
exp.printStackTrace();
}
}
if(e.getSource().equals(btn_newUser))
{
Login.myFrame.dispose();
new NewUser();
}
}
}
Po ustawieniu obrazu tła wygląda to tak:
Ukrywa komponent dlaJButton
, JLabel
.