13. marts 2004 - 13:51Der er
6 kommentarer og 1 løsning
Hvad gør jeg galt her (Opdatering af Labels på JPanel)
Følgende kode skulle gerne vise 2 labels på et JPanel, "pan". Det virker ikke, panelet bliver blot sort (baggrundsfarven er sort). Hvad er der galt ?
public void btnInfo_Click() { // Fjern alle komponenter på JPanel, og tilføj de 2 info labels. pan.removeAll(); info1.setForeground(Color.WHITE); info2.setForeground(Color.WHITE); Box bv = Box.createVerticalBox(); bv.add(Box.createVerticalStrut(20)); bv.add(info1); bv.add(Box.createVerticalStrut(20)); bv.add(info2); pan.add(BorderLayout.CENTER,bv); pan.repaint(); }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Du skal lige bytte lidt rundt på det, så skulle det virke
public void btnInfo_Click() { // Fjern alle komponenter på JPanel, og tilføj de 2 info labels. pan.removeAll(); info1.setForeground(Color.WHITE); info2.setForeground(Color.WHITE); Box bv = Box.createVerticalBox(); pan.add(Box.createVerticalStrut(20)); pan.add(BorderLayout.CENTER,bv); pan.add(info1); pan.add(info2); pan.repaint(); }
Så må vi da bare lave noget som virker( jeg tog den lidt på huskeren første gang - men den er åbenbart lidt rusten)
public class JFrame extends javax.swing.JFrame {
public JFrame() { initComponents(); }
private void initComponents() { jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton();
Jeg kunne altså ikke lade være med at rode lidt videre med det
Koden i mit første svar virker, man skal bare bruge validate() i stedet for repaint() (sikrer at containeren har valid layout)
Sådan
public void btnInfo_Click() { // Fjern alle komponenter på JPanel, og tilføj de 2 info labels. pan.removeAll(); info1.setForeground(Color.WHITE); info2.setForeground(Color.WHITE); Box bv = Box.createVerticalBox(); pan.add(Box.createVerticalStrut(20)); pan.add(BorderLayout.CENTER,bv); pan.add(info1); pan.add(info2); pan.validate(); }
Du har ret, ovenstående virker. Dog måtte jeg bruge
pan.removeAll(); pan.repaint();
Øverst i metoden - ellers kom jeg ud for, at de "nye" labels blev tegnet ovenpå nogle gamle. Egentlig mærkeligt, at Java ikke tager hensyn til dette.
Men tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.