PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit JFrame bzw. Background Image



suso
17-04-2006, 14:30
hey leute !
hab ein Problem:

- ich hab ein JFrame, darauf liegt eine JScrollPane, darauf liegt eine JTextArea...
- ich will ein Background image für die JFrame festlegen - kann dabei aber keine Graphics verwenden, da die Klasse nicht von JFrame, sonder von einer meiner Eigenen Klassen abgeleitet ist, die wiederum von einem Thread abgeleitet ist.
- hier der Source:


/*
* DChatWindow.java
*
* Created on 6. April 2006, 10:26
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package src.client;

import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import src.workerClasses.*;
import java.awt.event.AdjustmentListener;
import java.awt.event.AdjustmentEvent;
import java.awt.Color;


/**
*
* @author Manfred
*/
public class DChatWindow extends ChatWorker {

JFrame jf = new JFrame();

JPanel jp1 = new JPanel();

JPanel jp2 = new JPanel();

JScrollPane jsp = new JScrollPane();

JTextArea ta = new JTextArea();

JTextField input = new JTextField();

private javax.swing.JMenuBar MenueBar;

private javax.swing.JMenu Menue;

private javax.swing.JMenuItem MIExit;

String toNic = "";

String identification = "";

ClientView f = null;



public String getToNic() {
return toNic;
}

/** Creates a new instance of DChatWindow */
public DChatWindow(String id, String nic, String curServer, ClientView f) {
jf.setTitle(id + " chats with : " + nic);
identification = id;
toNic = nic;
this.f = f;
super.setId(id);
super.setServer(curServer);
connectComponents();
startUp();
jf.setDefaultCloseOperation(0);
styleIt();

}

private void connectComponents() {
MenueBar = new JMenuBar();
Menue = new JMenu("Menue");
MIExit = new JMenuItem("Exit");
MenueBar.add(Menue);
Menue.add(MIExit);
jf.setLayout(new BorderLayout());
jf.add(jp1, BorderLayout.CENTER);
jf.add(jp2, BorderLayout.SOUTH);
jf.add(MenueBar, BorderLayout.NORTH);
jp1.setLayout(new BorderLayout());
ta.setColumns(20);
ta.setEditable(false);
ta.setLineWrap(true);
ta.setRows(5);
jsp.setViewportView(ta);
jsp
.setHorizontalScrollBarPolicy(ScrollPaneConstants. HORIZONTAL_SCROLLBAR_NEVER);
jp1.add(jsp, BorderLayout.CENTER);
jp2.setLayout(new BorderLayout());
jp2.add(input);
jp1.updateUI();
jp2.updateUI();
jf.pack();
jf.setSize(400, 300);
}

private void styleIt() {
Image javabliss = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/src/images/javabliss.jpg"));
Image javacup = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/src/images/javacup.jpg"));
jsp.setOpaque(true);
ta.setForeground(Color.BLACK);
ta.setOpaque(true);
input.setBackground(Color.BLUE);
input.setBackground(Color.WHITE);
input.setOpaque(true);

}

public void onClose() {
f.removeChatWindow(toNic);
jf.setVisible(false);
}

private void startUp() {
jf.setVisible(true);

input.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
onInputKeyPressed(evt);
}
});
MIExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onClose();
}
});
jsp.getVerticalScrollBar().addAdjustmentListener(
new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
ta.select(ta.getHeight() + 1000, 0);
}
});
}

private void onInputKeyPressed(KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
String message = input.getText();
input.setText("");
ta.setText(ta.getText() + formatMessage(identification, message));
super.sendMessage(message, toNic);
}
}

public void printMessageToOutput(String from, String message) {
String messageToWrite = formatMessage(from, message);
ta.setText(ta.getText() + messageToWrite);

}

private String formatMessage(String id, String message) {
String finalMessage = "";

finalMessage = "\n" + "<" + id + ">" + message;

return finalMessage;
}

}

- das ist der ganze klassencode, für die die's sich anschauen wollen..
- die Methode styleIt() sollte das Image javabliss als background der JFrame setzen, sodass es noch immer sichtbar ist . - geht das überhaupt ?!?

- hier die Methode nochmal:

private void styleIt() {
Image javabliss = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/src/images/javabliss.jpg"));
Image javacup = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/src/images/javacup.jpg"));
jsp.setOpaque(true);
ta.setForeground(Color.BLACK);
ta.setOpaque(true);
input.setBackground(Color.BLUE);
input.setBackground(Color.WHITE);
input.setOpaque(true);

}

wär schön wenn ihr euch das mal anschauen könntet !!
danke, suso