1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
public TestLinkPerso()
{
this.setTitle("HTML link via a JLabel");
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
table = new JTable();
final DefaultTableModel model = (DefaultTableModel) table.getModel();
model.addColumn("Links");
model.addColumn("Name");
/*table.getColumnModel().getColumn(0)
.setCellRenderer(new CustomTableCellRenderer(label));
*/
table.setAutoCreateRowSorter(true);
table.setEnabled(true);
//table.setBackground(Color.lightGray);
//table.setGridColor(Color.lightGray);
table.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
table.getSelectionModel().clearSelection();
// constructs the popupMenu
popupMenu = new JPopupMenu();
menuItemCopyAll = new JMenuItem("Copy All Rows");
menuItemRemoveAll = new JMenuItem("Remove All Rows");
//menuItemCopyAll.addActionListener(new Events());
menuItemCopyAll.setToolTipText("Click to copy all lines");
//menuItemRemoveAll.addActionListener(new Events());
menuItemRemoveAll.setToolTipText("Click to remove all lines");
popupMenu.add(this.menuItemCopyAll);
popupMenu.add(this.menuItemRemoveAll);
// sets the popup menu for the table
table.setComponentPopupMenu(this.popupMenu);
//table.addMouseListener(new MouseReleased(table));
final Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
JPanel panNorth = new JPanel();
final JPanel panSouth = new JPanel();
final JLabel label = new JLabel(LABEL_TEXT);
panNorth.add(label);
final JTextField text = new JTextField(10);
panNorth.add(text);
JButton button = new JButton("Show Link");
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (!text.getText().isEmpty())
{
A_VALID_LINK = "http://"+ text.getText();
JLabel link = new JLabel();
link.setText(A_VALID_LINK);
link.setToolTipText("Click to go to : "+ A_VALID_LINK);
if (isBrowsingSupported())
{
JPanel panel = createPane(link, new LinkMouseListener());
panSouth.add(panel);
}
else if (!isBrowsingSupported())
{
JOptionPane.showMessageDialog(null,"This links is unsupported");
}
}
contentPane.add(panSouth, BorderLayout.SOUTH);
pack();
}
});
contentPane.add(panNorth, BorderLayout.NORTH);
contentPane.add(button);
pack();
}
private JPanel createPane(JLabel label, MouseListener ml)
{
DefaultTableModel model = (DefaultTableModel) table.getModel();
int begin = label.getText().indexOf(".");
int end = label.getText().lastIndexOf(".");
String webSiteName = label.getText().substring(begin+1, end);
assert ml != null;
label.setText(htmlIfy(linkIfy(label.getText())));
label.setCursor(new Cursor(Cursor.HAND_CURSOR));
label.addMouseListener(ml);
String[][] data = new String[][] {
{label.getText()},
{webSiteName}
};
System.out.println(label.getText()+ " "+ webSiteName);
for(String[] str:data)
for (String s : str)
System.out.println(s);
model.insertRow(0, data);
table.repaint();
// NOTE 2: Using a custom cell renderer
table.setDefaultRenderer(String.class, new CustomTableCellRenderer(label));
// Add into a scrollpane / regular pane
elevator = new JScrollPane(table,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
elevator.getViewport().setBackground(Color.WHITE);
JPanel panel = new JPanel();
panel.add(elevator);
return panel;
} |
Partager