Manuelle og semi-automatiske strategier for identitetsstyring virker - lige indtil nogen beder om dokumentation. For at undgå denne fare har DKTV taget kontrol over sin identitets- og adgangsstrategi.
Jeg havede nær sagt at det er næsten hip som hap, afhænger selvfølgelig af hvor meget der skal tegnes på panelet
Men det gør jo koden klart mere gennemskuelig at lave en klasse som extender JPanel og lade den klasse gøre tegnearbejdet, men er det bare nogle images der skal tegnes på et panel, ville jeg nok gøre det på den anden måde.
public class Test3 extends javax.swing.JFrame { public Test3() { initComponents(); setSize(600,250); }
private void initComponents() { jButton1 = new javax.swing.JButton(); panel_2 = new javax.swing.JPanel(); panel_1 = new Panel_1(); panel_3 = new Panel_3();
/* Tegner en gul cirkel på panelet, cirklen forsvinder * hvis du resizer framen, bruger getGraphics() */ private void tegn(java.awt.event.ActionEvent evt) { Graphics gp = panel_2.getGraphics(); gp.setColor(Color.YELLOW); gp.fillOval(0, 0, panel_2.getWidth(), panel_2.getHeight()); }
public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Test3().setVisible(true); } }); }
/* Klassen hvor den røde cirkel tegnes, ved at * override paintComponent, hvis du resizer framen * vil cirklen altid blive tegnet, i modsætning til * panelet med den gule cirkel der forsvinder * når framen resizes */
class Panel_1 extends JPanel{ public Panel_1(){ super(); }
public void paintComponent(Graphics g){ super.paintComponent(g);
/* * I denne klassen kan du tegne prikker ved at klikke * med musen, disse fjernes heller ikke ved resize, da * der tegnes på et BufferedImage som igen tegnes på panelet */ class Panel_3 extends JPanel{ public Panel_3(){ super(); setBackground(Color.WHITE);
addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent evt){ tegn(evt); } });
Tjaaaa - noget i den retning, den klasse som laver tegnearbejdet, skal have en reference til værktøjet og så skal du lade paintComponent gøre tegnearbejdet, det skulle nedenstående eksempel gerne illustrere.
class DrawFigure extends JComponent implements ListCellRenderer{ private int i; private Color color;
public DrawFigure(){ }
public void paintComponent(Graphics g){ int h = 22; g.setColor( color ); g.fillRect(0,0, getWidth(), h);
g.setColor(Color.BLACK); switch(i){ case 0 : g.drawLine(2, 2, h-4, h-4); break; case 1 : g.drawOval(2, 2, h-4, h-4); break; case 2 : g.drawRect(2, 2, h-4, h-4); break; } }
public Dimension getPreferredSize(){ return new Dimension(38, 22); }
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
this.i = (value != null ? new Integer(value.toString()) : 0);
if (isSelected) color = list.getSelectionBackground(); else color = list.getBackground();
return this; } }
class Panel_3 extends JPanel{ private JComboBox cmb; public Panel_3(JComboBox cmb){ super(); setBackground(Color.WHITE); this.cmb = cmb;
addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent evt){ tegn(evt); } });
}
private void tegn(MouseEvent evt){ g2.setColor(Color.BLACK); int h = cmb.getHeight(); int i = new Integer(cmb.getSelectedItem().toString()).intValue();
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.