tabela1 = new MyTable(15);
//jesli uzyje tego drugiego konstruktora JScrollPane(Component view, int
vsbPolicy, int hsbPolicy) to mam wyjatek
JScrollPane scrollPane1 = new JScrollPane(tabela1);
tabela1.setPreferredScrollableViewportSize(new Dimension(50, 50));
scrollPane1 dodaje do JPanel ktory jest ustawiony jako ContentPane ramki ,
moze poprostu zle togo uzywam , tak samo nie wiem czy dodawac do ramki czy
do panela JScrollPane ?
dziekuje kazda rada sie przyda
Musisz albo zaimplementować odpowiednio TableColumnModel i w metodzie
getColumn(int i), albo zrobić to w pętli, coś jak:
int w[] { 200, 70, 100, 150 }// Każda kolumna inny rozmiar
TableColumnModel model = table.getColumnModel();
for (int i = 0; i < w.length; i++)
model.getColumn(i).setPreferredWidth(w[i]);
>2) wiaze sie z pierwszym skoro nie moge
> ustawic szerokosci to przynajmniej dobrze by bylo ja przesuwac zwlaszcza
ze
> liczba wierszy i kolumn ma byc ustawiana w programie wiec umiescilem moja
> tabele w JScrollPane i nie wyswietla sie pasek przewijania poziomego ,
nie
> wiem jak to zrealizowac zeby byly oby dwa paski , nawet po ustawieniu ze
> maja byc zawsze widoczene wprawdzie sa widoczne ale dziala tylko pionowy .
>
table.setPreferredScrollableViewportSize(new Dimension(180, 320));
Pozdrawiam!
Gambit
zrobilem tak jak mowisz , nawet specjalnie zrobilem sobie przykladowy
programik tylko z ramka i tabelka i zgadza sie co piszesz , ja juz tego
probowalem , ale wyswietla sie tylko jeden pasek przewijania pionowego ,
poziomego sie wogole nie wyswietla , zamieszczam kod :
import javax.swing.*;
import java.awt.*;
/**
*
*/
public class nowe extends JPanel {
/** Creates a new instance of nowe */
public nowe() {
JTable tabela = new JTable(20, 230);
tabela.setPreferredScrollableViewportSize(new Dimension(90, 90));
JScrollPane scroller = new JScrollPane(tabela);
scroller.setPreferredSize(new Dimension(200,200));
add(scroller, BorderLayout.CENTER);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JFrame frame = new JFrame("ScrollDemo2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
JComponent newContentPane = new nowe();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}
prosze o pomoc moze kod ktory bylby dobry bo dalej nie mam rozwiazania
public nowe() {
JPanel panel = new JPanel();
JTable tabela = new JTable(20, 230);
tabela.setPreferredScrollableViewportSize(new Dimension(200, 10));
JScrollPane scroller = new JScrollPane(tabela,40,50);
panel.add(scroller,BorderLayout.CENTER);
scroller.setPreferredSize(new Dimension(200,200));
setContentPane(panel);
}
to mam :
java.lang.IllegalArgumentException: invalid verticalScrollBarPolicy
at
javax.swing.JScrollPane.setVerticalScrollBarPolicy(JScrollPane.java:465)
at javax.swing.JScrollPane.<init>(JScrollPane.java:259)
at com.nowe.nowe.<init>(nowe.java:25)
at com.nowe.nowe.main(nowe.java:38)
Exception in thread "main"
wybaczcie jesli to jakis glupi blad ale wynika on z niewiedzy :) dlatego nie
umie sobie z tym poradzic
tak tez probowalem i ten sam wyjatek
Może dlatego, że zamieniłeś kolejność argumentów :)
JScrollPane scroller = new JScrollPane(tabela,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
I skoro opakowujesz tabele w scrollbar to dobrze by było ustawić żeby sama
się nie rozszerzała:
tabela.setAutoResizeMode(tabela.AUTO_RESIZE_OFF);
Pozdrawiam!
Gambit