나는 아직 표면 아래로 멀리 여행하지 않았지만 JApplet을 만드는 법을 배우고 있습니다. 인터페이스가 "도장"되기 전에 paintComponent (s)에 의해 이상적으로 그려 지거나 paint () 메소드 내에서 추가되는 image (.png)가 있습니다.
흥미롭게도 JApplet은 appletviewer에 의해 복제 된 후에 만 의도 한대로로드됩니다. 수명주기 또는 운영 역학에 대한 이해가 부족한 것 같습니다.
다음은 스윙 컴포지션의 코드입니다. 간결성을 위해 정의가 제거되었습니다.
public class JFriendsPhones extends JApplet implements ActionListener, MouseListener {
public void init(){
submit.addActionListener(this);
queryByName.addActionListener(this);
queryByNum.addActionListener(this);
setVisible(true);
introduction = getGraphics();
prepareImage(intro, this);
intro = getImage( getCodeBase(), "introduction.png");
setVisible(true);
validate();
}
public void start(){
}
public void paint(Graphics g){
paintComponent(g);
}
public void stop(){
}
public void destroy(){
}
public void actionPerformed( ActionEvent ev ){
Object source = ev.getSource();
returnLab.setVisible(false);
resultsPan.setBackground(Color.white);
if( true ){
if( queryByName.getText().equals("") != true && queryByNum.getText().equals("") != true ){
outcomeLab.setText("Search by only one term");
queryByName.setText("");
queryByNum.setText("");
} else if( queryByName.getText().equals("") == true && queryByNum.getText().equals("") == true){
outcomeLab.setText("Enter search term");
} else {
if(queryByName.getText().equals("") == false){
for( int i = 0; i < 5; i++ ){
if(queryByName.getText().equalsIgnoreCase(friends[i])){
resultsPan.setBackground(new Color(190,255,200));
outcomeLab.setText("1-result found:");
returnLab.setText(frNumbers[i]);
returnLab.setVisible(true);
found = true;
}
} if(found == false){
resultsPan.setBackground(new Color(240,100,100));
outcomeLab.setText("0-matches");
}
} else {
for( int i = 0; i < 5; i++ ){
if(queryByNum.getText().equalsIgnoreCase(frNumbers[i])){
resultsPan.setBackground(new Color(190,255,200));
outcomeLab.setText("1-result found:");
returnLab.setText(friends[i]);
returnLab.setVisible(true);
found = true;
}
}
if( found == false){
resultsPan.setBackground(new Color(240,100,100));
outcomeLab.setText("0-matches");
}
}
}
}
found = false;
}
public void componentResized( ComponentEvent cEv){
repaint();
}
@Override
public void componentMoved(ComponentEvent e) {
contain.repaint();
}
@Override
public void componentShown(ComponentEvent e) {
paintComponent(introduction);
}
@Override
public void componentHidden(ComponentEvent e) {
// TODO Auto-generated method stub
}
public void mouseClicked( MouseEvent clicked){
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
public void paintComponent(Graphics gr){
super.paintComponents(gr);
if(initialized == false){
gr.drawImage(intro, 10, 10, 280, 430, this);
validate();
initialized = true;
} else {
titl_instrPan.add(titleLab);
titl_instrPan.add(instructLab);
titl_instrPan.add(instructLab2);
inputPan.add(byNameLab);
inputPan.add(queryByName);
inputPan.add(byNumLab);
inputPan.add(queryByNum);
inputPan.add(regionPan);
inputPan.add(submit);
resultsPan.add(outcomeLab, BorderLayout.NORTH);
resultsPan.add(returnLab, BorderLayout.SOUTH);
resultsPan.setBackground(Color.white);
mainPanel.add(titl_instrPan, BorderLayout.NORTH);
mainPanel.add(inputPan, BorderLayout.CENTER);
mainPanel.add(resultsPan, BorderLayout.SOUTH);
contain.add(mainPanel);
setVisible(true);
validate();
}
} end class JFriendsPhones
super.paint (...)를 호출하지 않아 Swing의 기본 페인팅 메커니즘을 망쳤습니다.
어쨌든 JApplet의 paint (..)를 덮어 쓰지 마세요 !!! 이 작업을 수행 할 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다