Pytanie : Wielkościowy JScrollPane prawidłowo

W ten przykład, the JScrollPane być zbyt ampuła. I próbować liczba sposób sizeit, ale móc ono prawy. Widzieć the "rozmiar???" komentować w MyOptionsPanel klasa.

To biegać ten zastosowanie, biegać the magistrala w MyTabbedPane
(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:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
package tableTest;

importowy java.awt.BorderLayout;
importowy java.awt. Wymiar;

importowy javax.swing.JComboBox;
importowy javax.swing.JLabel;
importowy javax.swing.JPanel;
importowy javax.swing.JScrollPane;
importowy javax.swing.JTable;
importowy javax.swing.SpringLayout;
importowy javax.swing.table.DefaultTableModel;

społeczeństwo klasowy MyOptionsPanel przedłużyć JPanel {

	intymny JLabel plantLabel;
	intymny JComboBox plantComboBox;

	intymny JLabel animalLabel;
	intymny JComboBox animalComboBox;

	intymny JPanel listPanel;
	intymny JTable myTable;
	
	intymny Smyczkowy [] columnHeader = {"Roślina/Zwierzę"};
	
	/**
	 * konstruktor
	 *
	jawny MyOptionsPanel () {

		layoutComponents ();

	}

	/**
	 * układ składnik
	 *
	intymny kawitacyjny layoutComponents () {

		// roślina
		plantLabel = nowy JLabel ("Roślina");
		this.add (plantLabel);

		Sznurek [] plantTypes = {"trawa", "forb", "kwiat", "krzak", "drzewo"};
		plantComboBox = nowy JComboBox (plantTypes);
		plantComboBox.setSelectedItem ("trawa");
		this.add (plantComboBox);

		// zwierzę
		animalLabel = nowy JLabel ("Zwierzę");
		this.add (animalLabel);

		Sznurek [] animalTypes = {"pies", "kot", "koń", "cakiel", "krowa"};
		animalComboBox = nowy JComboBox (animalTypes);
		animalComboBox.setSelectedItem ("pies");
		this.add (animalComboBox);


		// lista
		listPanel = nowy JPanel (nowy BorderLayout ());

		myTable = nowy JTable ();
		DefaultTableModel defaultTableModel = nowy DefaultTableModel ();
		Zawiązywać [] [] stringArray = composeList ();

		defaultTableModel.setDataVector (stringArray, columnHeader);
		myTable.setModel (defaultTableModel);

		//myTable.setPreferredScrollableViewportSize (myTable.getPreferredSize ());
		JScrollPane scrollPane = nowy JScrollPane (myTable);
		listPanel.add (scrollPane);

		this.add (listPanel);

		// rozmiar???

		Wymiarowy plantLabelDimension = plantLabel.getPreferredSize ();
		Wymiarowy animalDimension = animalLabel.getPreferredSize ();
		Wymiarowy myListDimension = myTable.getPreferredSize ();
		Wymiarowy scrollPaneDimension = scrollPane.getViewport () .getPreferredSize ();
		Wymiarowy listPanellDimension = listPanel.getPreferredSize ();
		Wymiarowy thisDimension = this.getPreferredSize ();

		//System.out.println ("plantLabelDimension szerokość: wzrost: " + plantLabelDimension.width + ": " + plantLabelDimension.height);
		//System.out.println ("animalabelDimension szerokość: wzrost: " + animalDimension.width + ": " + animalDimension.height);
		//System.out.println ("myList szerokość: wzrost: " + myListDimension.width + ": " + myListDimension.height);
		//System.out.println ("scrollPaneDimension szerokość: wzrost: " + scrollPaneDimension.width + ": " + scrollPaneDimension.height);
		//System.out.println ("listPanellDimension szerokość: wzrost: " + listPanellDimension.width + ": " + listPanellDimension.height);

		int szerokość = listPanellDimension.width;
		myTable.setPreferredScrollableViewportSize (myTable.getSize ());
		//myList.setFillsViewportHeight (true);
		scrollPane.getViewport () .setPreferredSize (myTable.getPreferredSize ());
		scrollPane.getViewport () .setMinimumSize (myTable.getPreferredSize ());
		scrollPane.getViewport () .setMaximumSize (myTable.getPreferredSize ());

		int wzrost = plantLabelDimension.height + animalDimension.height + scrollPaneDimension.height;
		thisDimension.setSize (szerokość, wzrost);
		//System.out.println ("thisDimension szerokość: wzrost: " + thisDimension.width + ": " + thisDimension.height);

		this.setPreferredSize (thisDimension);

		SpringLayout springLayout = nowy SpringLayout ();
		this.setLayout (springLayout);

		// przystosowywać przymus (ie pozycja składnik)

		// roślina
		springLayout.putConstraint (SpringLayout.WEST, plantLabel, 10, SpringLayout.WEST, 10);
		springLayout.putConstraint (SpringLayout.NORTH, plantLabel, 15, SpringLayout.NORTH, 15);

		springLayout.putConstraint (SpringLayout.WEST, plantComboBox, 110, SpringLayout.WEST, 110);
		springLayout.putConstraint (SpringLayout.NORTH, plantComboBox, (0), SpringLayout.NORTH, plantLabel);

		// zwierzę
		springLayout.putConstraint (SpringLayout.WEST, animalLabel, (0), SpringLayout.WEST, plantLabel);
		springLayout.putConstraint (SpringLayout.NORTH, animalLabel, 15, SpringLayout.SOUTH, plantLabel);

		springLayout.putConstraint (SpringLayout.WEST, animalComboBox, 110, SpringLayout.WEST, 110);
		springLayout.putConstraint (SpringLayout.NORTH, animalComboBox, (0), SpringLayout.NORTH, animalLabel);

		// lista
		springLayout.putConstraint (SpringLayout.WEST, listPanel, (0), SpringLayout.WEST, animalLabel);
		springLayout.putConstraint (SpringLayout.EAST, listPanel, -10, SpringLayout.EAST, -10); // troszkę pokój na the prawa strona
		springLayout.putConstraint (SpringLayout.NORTH, listPanel, 15, SpringLayout.SOUTH, animalLabel);
		springLayout.putConstraint (SpringLayout.SOUTH, listPanel, -10, SpringLayout.SOUTH, -10);	 // troszkę pokój przy the dno
	}


	ochraniać kawitacyjny resetList () {

		Zawiązywać [] [] stringArray = composeList ();
		DefaultTableModel dtm = (DefaultTableModel) myTable.getModel ();
		dtm.setDataVector (stringArray, nowy Przedmiot [] {"Roślina/Zwierzę"});

	}

	intymny Smyczkowy [] [] composeList () {

		Zawiązywać [] [] returnArray = nowy Sznurek [2] [(1)];
		returnArray [(0)] [(0)] = (Smyczkowy) plantComboBox.getSelectedItem ();
		returnArray [(1)] [(0)] = (Smyczkowy) animalComboBox.getSelectedItem ();

		powrotny returnArray;

	}

	społeczeństwo Smyczkowy getPlant () {
		wracać (Smyczkowy) plantComboBox.getSelectedItem ();
	}

	społeczeństwo Smyczkowy getAnimal () {
		wracać (Smyczkowy) animalComboBox.getSelectedItem ();
	}

	społeczeństwo Smyczkowy getTitle () {
		powrót "Roślina Zwierzęcy Lista";
	}

}

--------

pakunek tableTest;

importowy java.awt.event.WindowAdapter;
importowy java.awt.event.WindowEvent;
importowy java.beans.PropertyChangeEvent;
importowy java.beans.PropertyChangeListener;

importowy javax.swing.JFrame;
importowy javax.swing.JPanel;
importowy javax.swing.JScrollPane;
importowy javax.swing.JTabbedPane;
importowy javax.swing.UIManager;

społeczeństwo klasowy MyTabbedPane przedłużyć JTabbedPane narzędzie PropertyChangeListener {

	intymny MyOptionsPanel myOptionsPanel;
	intymny JPanel miscPanel;

	/**
	 * konstruktor
	 *
	MyTabbedPane () {

		setLayout ();

	}

	/** 
	 * ustalony układ zakładka
	 *
	intymny kawitacyjny setLayout () {

		myOptionsPanel = nowy MyOptionsPanel ();
		this.addTab (myOptionsPanel.getTitle (), myOptionsPanel);

		miscPanel = nowy JPanel ();
		this.addTab ("MiscPanel", miscPanel);

	}

	@Override
	jawny kawitacyjny propertyChange (PropertyChangeEvent wydarzenie) {
		System.out.println ("MyTabbedPane.propertyChange (): wydarzenie: " + event.getPropertyName ());
	}

	 /**
	 * @return
	 *
	jawny MyOptionsPanel getMyOptionsPanel () {
		powrotny myOptionsPanel;
	}

	/**
	 * @return
	 *
	jawny JPanel getMiscPanel () {
		powrotny miscPanel;
	}


	/**
	 * 
	 * @param args
	 *
	jawny statyczny kawitacyjny główny (Sznurek [] args) {

		próba {
			UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ());
		}
		chwyt (Wyjątek e) {
			e.printStackTrace ();
		}

		MyTabbedPane myTabbedPane = nowy MyTabbedPane ();

		definitywny JFrame rama = nowy JFrame ();

		JScrollPane ślimacznica = nowy JScrollPane (myTabbedPane);
		scroll.getViewport () .setPreferredSize (myTabbedPane.getPreferredSize ());
		frame.getContentPane () .add (ślimacznica);

		frame.setTitle ("MyTabbedPane");
		frame.addWindowListener (nowy WindowAdapter () {
			@Override
			jawny pustka windowClosing (WindowEvent e) {
				int szerokość = frame.getWidth ();
				int wzrost = frame.getHeight ();
				System.out.println ("szerokość x wzrost:: " + szerokość + "x" + wzrost);
			}
		});

		frame.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
		frame.setLocation (300, 200);
		frame.pack ();
		frame.setVisible (true);
	}

}

--------

pakować tableTest;

importować java.awt.BorderLayout;

importować javax.swing.JPanel;

/**
 * panel tafla tafla
 *
społeczeństwo klasowy MyTabbedPanePanel przedłużyć JPanel {

	ochraniać MyTabbedPane myTabbedPane;


	/**
	 * konstruktor
	 *
	jawny MyTabbedPanePanel () {

		myTabbedPane = nowy MyTabbedPane ();

		layoutComponents ();

	}

	intymny kawitacyjny layoutComponents () {

		setLayout (nowy BorderLayout ());

		dodawać (myTabbedPane, BorderLayout.CENTER);

	}

	społeczeństwo Smyczkowy getPlant () {
		powrotny myTabbedPane.getMyOptionsPanel () .getPlant ();
	}

	społeczeństwo Smyczkowy getAnimal () {
		powrotny myTabbedPane.getMyOptionsPanel () .getAnimal ();
	}

	jawny kawitacyjny resetList () {
		myTabbedPane.getMyOptionsPanel () .resetList ();
	}

}

Odpowiedź : Wielkościowy JScrollPane prawidłowo

you've dostać ono w the centre BorderLayout che wynikać w ono resized wszystkie the dostępny przestrzeń w the mateczny panel.

Jeżeli ty chcieć ile przestrzeń ono brać wtedy dodawać JPanel listPanel, i dodawać twój scrollpane ten panel. Ty móc wtedy the układ kierownik the panel the rozmiar the ślimacznica tafla
Inne rozwiązania  
 
programming4us programming4us