zu liefern Ich bin verwirrt, wenn das Problem auftritt, wie ich mein Projekt handhabe. Der folgende Code ist eine abstrakte Version. By the way, ich bin traurig, aber ich habe auf diese Weise behandeln ~~Methode, um Daten in der GUI zu aktualisieren und Parameter
Haupteintrag und Rahmen
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;
}
}
Selbst Design-Modul
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;
}
}
Zuhörer
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();
}
}
Ich möchte die scrollPanel
neu streichen, um den Text auf der label
, dh von Old Data
bis New Data
zu aktualisieren. Aber ich habe es versäumt, es zu ändern, indem ich anrufe
((TableFrame) frame).setScrollPane(MyModule.MyScrollPane(data));
((TableFrame) frame).getScrollPane().repaint();
Kann jemand mir etwas beraten? Vielen Dank. Was soll ich tun, um meinen Zweck zu erreichen?
Danke, was soll ich tun, um meinen Zweck zu erreichen? – RyougiShiki
Ich habe gerade technische Probleme, aber ich bin dabei, meine Antwort zu aktualisieren, geben Sie mir einen Moment: D – Mark
Danke zuerst anwser. Die Art, wie du zeigst, ist praktikabel, aber ich gebe ein Projekt, das viel selbstdefiniertes Modul benötigt. Diese Instanz ist eine einfache Ich vereinfache das Problem in meinem Projekt. Ich muss ein selbstdefiniertes Modul verwenden. Machen Sie dies als Voraussetzung, gibt es eine andere Methode, um es zu lösen? In meinem Projekt möchte ich ein ResultSet liefern. – RyougiShiki