프로젝트를 처리 할 때 문제가 발생하면 당황합니다. 다음 코드는 추상적 인 버전입니다. 그런데, 나는 슬프다 그러나 나는 그런 식으로 ~~GUI에서 데이터를 업데이트하고 매개 변수를 전달하는 방법
주 항목 및 프레임
package com.ryougi.repaint;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
public class RepaintTest {
public static void main(String[] args) {
EventQueue.invokeLater(()-> {
JFrame frame = new TableFrame();
frame.setVisible(true);
});
}
}
class TableFrame extends JFrame {
private JScrollPane scrollPane;
private JLabel label;
private JButton button;
private String data = "Old Data";
public TableFrame() {
setTitle("TableFrame Frame");
setSize(960, 540);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initLayout();
}
public void initLayout() {
button = new JButton("Add");
label = new JLabel("Old Data");
scrollPane = MyModule.MyScrollPane(data);
// Style of scrollPane
scrollPane.setBounds(0, 0, 960, 360);
scrollPane.setBackground(Color.CYAN);
// Style of button
button.setBounds(420, 400, 120, 40);
button.setBorder(null);
button.setBackground(Color.PINK);
// Listener of button
button.addMouseListener(new BtnClickListener(this));
add(scrollPane);
add(button);
}
public JScrollPane getScrollPane() {
return scrollPane;
}
public void setScrollPane(JScrollPane scrollPane) {
this.scrollPane = scrollPane;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
자체 설계 모듈
package com.ryougi.repaint;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
public class MyModule {
private static JScrollPane scrollPane;
private static JLabel label;
public static JScrollPane MyScrollPane(String data) {
label = new JLabel(data);
scrollPane = new JScrollPane(label);
return scrollPane;
}
}
리스너에서 처리해야
package com.ryougi.repaint;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class BtnClickListener extends MouseAdapter {
private String data = "New Data";
private JFrame frame;
public BtnClickListener(JFrame frame) {
this.frame = frame;
}
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
// ((TableFrame) frame).setData(data);
((TableFrame) frame).setScrollPane(MyModule.MyScrollPane(data));
((TableFrame) frame).getScrollPane().repaint();
}
}
scrollPanel
을 다시 칠해 label
에있는 텍스트 표시를 새로 고치려면 Old Data
에서 New Data
까지를 의미합니다. 하지만 전화로 변경하지 못했습니다.
((TableFrame) frame).setScrollPane(MyModule.MyScrollPane(data));
((TableFrame) frame).getScrollPane().repaint();
아무도 나에게 조언을 해줄 수 있습니까? 고맙습니다. 내 목적을 달성하려면 어떻게해야합니까?
감사합니다. 내 목적을 달성하기 위해 무엇을해야합니까? – RyougiShiki
지금 기술적 인 문제가 있습니다. 그러나 제 대답을 업데이트하는 중입니다. 잠시만 기다려주십시오. D – Mark
감사합니다. 당신이 보여줄 수있는 방법은 실행 가능하지만, 프로젝트에 많은 셀프 정의 모듈이 필요합니다. 이 인스턴스는 프로젝트에서 문제를 단순화 한 간단한 인스턴스입니다. 자체 정의 모듈을 사용해야합니다. 이를 전제 조건으로 삼는 다른 방법이 있을까요? 내 프로젝트에서 나는 ResultSet을 전달하고자한다. – RyougiShiki