Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Задачка по Java / 4 сообщений из 4, страница 1 из 1
11.12.2013, 10:48:08
    #38496578
DrunkWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка по Java
В java новичек. Такой код:

Код: java
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.
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class TestViewer {

public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
public void run() {

	JDialog dialog = new TestDialog();  //Настройки окна{
	dialog.setLocationRelativeTo(null);
	dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
	dialog.setTitle("Type text and press Enter");
	dialog.setSize(300, 700);
	dialog.setVisible(true);
	dialog.setLocationRelativeTo(null);
	dialog.setModal(true); //}
}
});
}
}

class TestDialog  extends JDialog {

public TestDialog() {
	getContentPane().add(new JPanel(), BorderLayout.CENTER);
	getContentPane().add(createBtnPanel(), BorderLayout.CENTER);
}

private JPanel createBtnPanel() {
	int n = 100; //количество кнопок
	//Массив названий кнопок{
	final String ArrButtonNames[] = new String[n];  //массив имен кнопок
    for (int h = 0; h < ArrButtonNames.length; h++) {
        if ((h%2)==0){
            ArrButtonNames[h]="Filter"+h;
        }
        else{
            ArrButtonNames[h]="Button"+h;
        }
    }

	final JButton ArrButton[] = new JButton[n];//массив кнопок
	final JPanel btnPanel = new JPanel(new GridLayout(0, ArrButtonNames.length, 1,1));
	btnPanel.setLayout(new GridLayout(0, 1));
  	final JTextField textField = new JTextField();  // строка для фильтра
    textField.setColumns(23);
    btnPanel.add(textField);
	for (int i = 0; i < ArrButtonNames.length; i++) {   /////Наполняем панель кнопками
        String btnString = ArrButtonNames[i];
        JButton button = new JButton(btnString);
       //размер кнопок выставляется, но все сбрасывается после фильтрации, если на панели есть скролбар{
 	    Dimension d = button.getPreferredSize();
		d.setSize(d.getWidth(), d.getHeight()*1);  
		button.setPreferredSize(d);
		button.setSize(d);
		button.setMinimumSize(d);
		button.setMaximumSize(d);	
		////}
	   btnPanel.add(button);
       ArrButton[i] = button;
	}
	textField.addActionListener(new ActionListener() {  
	public void actionPerformed(ActionEvent e) {
		for(int  k = 0; k < ArrButtonNames.length; k++) { 
            if(ArrButtonNames[k].indexOf(textField.getText())==-1) {   //поиск среди имен кнопок по введенной подстроке
                btnPanel.remove(ArrButton[k]);
                btnPanel.revalidate();
                btnPanel.repaint();
			}
		}
 	}	
    });

// Создаем основную панель, куда все это поместим и скроллбар.{

	JPanel MainPanel = new JPanel();
	MainPanel.setLayout(new BorderLayout());
	MainPanel.add(btnPanel, BorderLayout.NORTH);
	final JScrollPane scrollPane = new JScrollPane(btnPanel);
	MainPanel.add(scrollPane, BorderLayout.CENTER);
	scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); //}
	return MainPanel;
}
}


Задача сделать так, чтобы высота кнопок не менялась после фильтрации по названию в строке ввода. Заранее благодарен.
...
Рейтинг: 0 / 0
16.12.2013, 10:50:01
    #38501852
DrunkWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка по Java
?
...
Рейтинг: 0 / 0
16.12.2013, 12:02:22
    #38501933
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка по Java
Лень гуглить :C
...
Рейтинг: 0 / 0
16.12.2013, 21:13:31
    #38502737
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка по Java
DrunkWolf, бери среду NetBeans и рисуй в ней форму. Она тебе сгенерит layout
в котором размеры батонов будут фиксед. Потом этот класс вставишь в свой
проект и всё будет чики-пики.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Задачка по Java / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]