28. september 2003 - 19:18
Der er
7 kommentarer
Bedste komponent for JButtons i en JScrollPane?
Jeg skal tilføje JButtons til en komponent, denne komponent skal ind i en JScrollPane - men hvilken komponent er den nemmeste at benytte, når der her drejer sig om dynamisk oprettelse af knapper på et minimalt område (derfor JScrollPane) ? jeg har tænkt på JTable eller JList, men der er alt det bøvl med Renderers. Jeg kan ikke få en JPanel ind i JScrollPanen, er det forkert at benytte en sådan komponent. Det er hele 2 spørgsmål, men jeg har heller ikke flere.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
28. september 2003 - 19:22
#1
Du kan sagtens putte et JPanel i et SCrollPane
28. september 2003 - 19:46
#2
Ja det kan jeg godt.
28. september 2003 - 20:01
#3
Okay ! import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class JButtonTableExample extends JFrame { public JButtonTableExample(){ super( "JButtonTable Example" ); DefaultTableModel dm = new DefaultTableModel(); dm.setDataVector(new Object[][]{{"button 1"}, {"button 2"}, {"button 3"}, {"button 4"}, {"button 5"}, {"button 6"}, {"button 7"}, {"button 8"}, {"button 9"}, {"button 10"}, {"button 11"}}, new Object[]{"Button"}); JTable table = new JTable(dm); table.getColumn("Button").setCellRenderer(new ButtonRenderer()); table.getColumn("Button").setCellEditor(new ButtonEditor(new JCheckBox())); JScrollPane scroll = new JScrollPane(table); getContentPane().add( scroll ); setSize( 400, 100 ); setVisible(true); } public static void main(String[] args) { JButtonTableExample frame = new JButtonTableExample(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } } class ButtonEditor extends DefaultCellEditor { protected JButton button; private String label; private boolean isPushed; public ButtonEditor(JCheckBox checkBox) { super(checkBox); button = new JButton(); button.setOpaque(true); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fireEditingStopped(); } }); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (isSelected) { button.setForeground(table.getSelectionForeground()); button.setBackground(table.getSelectionBackground()); } else{ button.setForeground(table.getForeground()); button.setBackground(table.getBackground()); } label = (value ==null) ? "" : value.toString(); button.setText( label ); isPushed = true; return button; } public Object getCellEditorValue() { if (isPushed) { JOptionPane.showMessageDialog(button ,label + ": Ouch!"); } isPushed = false; return new String( label ) ; } public boolean stopCellEditing() { isPushed = false; return super.stopCellEditing(); } protected void fireEditingStopped() { super.fireEditingStopped(); } } class ButtonRenderer extends JButton implements TableCellRenderer { public ButtonRenderer() { setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (isSelected) { setForeground(table.getSelectionForeground()); setBackground(table.getSelectionBackground()); } else{ setForeground(table.getForeground()); setBackground(UIManager.getColor("Button.background")); } setText( (value ==null) ? "" : value.toString() ); return this; } } Så må resten være op til dig !
28. september 2003 - 20:51
#4
Okay! Ha ha. Dovenskaben længe leve, er man doven må man give point
28. september 2003 - 21:01
#5
Ja - jeg ved ikke om du kan bruge det, men det var et eksempel jeg havde liggende. Selv ville jeg jo nok vælge et JPanel med et GridLayout, væsenligt nemmere, hurtigere og meget mere simpelt.
28. september 2003 - 21:48
#6
måske kan du bruge en toolbar ? (ved ikke selv om det kan lade sig gøre og har ikke tid til at lave et eksempel)
02. december 2003 - 20:39
#7
Ud fra din kommentar 28/09-2003 20:51:12, må vel være tid !!
Kurser inden for grundlæggende programmering