JTable i obrazek z html

JTable i obrazek z html
S6
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:29
0

Witam,

mam obrazek w komórce JTable, lecz komórka jest mniejsza niż obrazek, nie chcę rozszerzać wierszy tylko zrobić żeby po najechaniu myszką było widać cały obrazek. Obrazek jest w komórce w html-u ze strony. przykładowy kod obrazka w komórce:

Kopiuj
 <html><img class="product" id="productimage_1636733" src="http://www.c-and-a.com/iview/FRONT_PRODUCT_OVERVIEW/161049_1.jpg" width="178" height="307" alt="Sklep internetowy C&amp;A | Czapka dzianinowa - kolor: ciemnoniebieski" title="Sklep internetowy C&amp;A | Czapka dzianinowa - kolor: ciemnoniebieski"></html>
edytowany 1x, ostatnio: skuter6
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

Nie wiem dlaczego ten post jest w dziale Java, i dlaczego piszesz o JTable.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
S6
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:29
0
bogdans napisał(a):

Nie wiem dlaczego ten post jest w dziale Java, i dlaczego piszesz o JTable.

Program jest w Javie, ale komórce JTable ustawiłem obrazek ze strony i aby rozmiar jego był ustalony zamieściłem go w kodzie html, lecz liczyłem, że w jakiś sposób da się zrobić aby można było widzieć cały obrazek nie rozszerzając wysokości wiersza JTable.
Przykładowy kod:

Kopiuj
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Main {

	private JFrame frame;
	private JTable table;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Main window = new Main();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Main() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel = new JPanel();
		GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(panel, GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE)
					.addContainerGap())
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(panel, GroupLayout.DEFAULT_SIZE, 239, Short.MAX_VALUE)
					.addContainerGap())
		);
		
		JScrollPane scrollPane = new JScrollPane();
		GroupLayout gl_panel = new GroupLayout(panel);
		gl_panel.setHorizontalGroup(
			gl_panel.createParallelGroup(Alignment.LEADING)
				.addGroup(Alignment.TRAILING, gl_panel.createSequentialGroup()
					.addContainerGap(88, Short.MAX_VALUE)
					.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 316, GroupLayout.PREFERRED_SIZE)
					.addContainerGap())
		);
		gl_panel.setVerticalGroup(
			gl_panel.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_panel.createSequentialGroup()
					.addContainerGap()
					.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 217, Short.MAX_VALUE)
					.addContainerGap())
		);
		
		table = new JTable();
		table.setModel(new DefaultTableModel(
			new Object[][] {
				{1, "Czapka dzianinowa", 40.00, "<html><img class=\"product\" id=\"productimage_1636733\" src=\"http://www.c-and-a.com/iview/FRONT_PRODUCT_OVERVIEW/161049_1.jpg\" width=\"178\" height=\"307\" alt=\"Sklep internetowy C&amp;A | Czapka dzianinowa - kolor: ciemnoniebieski\" title=\"Sklep internetowy C&amp;A | Czapka dzianinowa - kolor: ciemnoniebieski\"></html>"},
				{2, null, null, null},
			},
			new String[] {
				"nr", "nazwa", "cena", "obrazek"
			}
		) {
			Class[] columnTypes = new Class[] {
				Integer.class, String.class, Double.class, Object.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
		});
		table.getColumnModel().getColumn(0).setPreferredWidth(24);
		table.getColumnModel().getColumn(1).setPreferredWidth(174);
		table.getColumnModel().getColumn(3).setPreferredWidth(206);
		scrollPane.setViewportView(table);
		panel.setLayout(gl_panel);
		frame.getContentPane().setLayout(groupLayout);
	}

}

Jak zrobić by po najechaniu myszką było widać cały obrazek?

edytowany 1x, ostatnio: skuter6
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

A gdzie ten obrazek ma się pojawić? Spróbuj MouseMotionListener.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
S6
tak naprawdę nie istotne dla mnie to gdzie się pojawi ważne aby było widać cały, pomyślałem żeby użyć tooltip, ale nie wiem jeszcze jak go przypisać do komórki.
S6
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:29
0

już mam

Kopiuj
JTable table = new JTable(){
                    public String getToolTipText(MouseEvent e) {
		        String tip = null;
		        java.awt.Point p = e.getPoint();
		        int rowIndex = rowAtPoint(p);
		        int colIndex = columnAtPoint(p);
		        int realColumnIndex = convertColumnIndexToModel(colIndex);
		        if (realColumnIndex == X) { //X to kolumna w której ma być tooltip
		            tip = getValueAt(rowIndex, colIndex).toString();
		        }
		        return tip;
		    }
};

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.