Ich habe diese JFrame
mit JLabel label1
, aber ich kann es nicht das Bild anzeigen. Wie zeige ich das aktualisierte gepufferte Bild im Etikett jedes Mal an, wenn der showScreenShot()
von einer anderen Klasse aufgerufen wird?Wie wird das gepufferte Bild in JLabel oder JPanel angezeigt?
Ich benutze Eclipse WindowBuilder.
Hier ist der Code:
public class TeacherDashBoard extends JFrame {
private JPanel contentPane;
private BufferedImage img;
private static TeacherDashBoard frame;
private static JLabel label1;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame = new TeacherDashBoard();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void showScreenShot(byte[] bytes) throws IOException {
img = ImageIO.read(new ByteArrayInputStream(bytes));
label1.getGraphics().drawImage(img, 0, 0, label1.getWidth(), label1.getHeight(), null);
}
public TeacherDashBoard() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 424);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
label1 = new JLabel();
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(29)
.addComponent(label1, GroupLayout.PREFERRED_SIZE, 210, GroupLayout.PREFERRED_SIZE)
.addContainerGap(591, Short.MAX_VALUE))
);
layout.setVerticalGroup(layout.createParallelGroup(Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(96)
.addComponent(label1, GroupLayout.PREFERRED_SIZE, 104, GroupLayout.PREFERRED_SIZE)
.addContainerGap(333, Short.MAX_VALUE))
);
getContentPane().setLayout(layout);
pack();
}
}
Dies ist eine verwirrende Mischung von 'null' Layout ist,' GroupLayout' und 'pack()'. Lassen Sie die erste fallen und finden Sie heraus, wie Sie die letzten beiden verwenden können. –