Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Java Swing и Jtree

Featured Replies

Здравейте на всички весели празници искам да попйтам за малко помощ опитвам се да си направа една програмка за четене на PDF до тук добре всичко работи но след като е минимизирам и е отвора пак меши pdf viewer със Label  програмката е чист любителски интерес и опит за придобиване на повече знание :)

другото което искам да попитам е за Jtree хубаво всичко което съм направил работи обаче 

когато натисна някой DefaultMutableTreeNode тръгва да ми търси pdf както е в Listener каквото и да се опйтах да направия точно тези 5 node не мога да ги забрания като опция за търсене на pdf и в случея ми търси библиотека.pdf.... 

Благодаря предварително за съветите как да се справя с предизвикателството 🙏

package GUI;

import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;

import org.icepdf.ri.common.ComponentKeyBinding;
import org.icepdf.ri.common.SwingController;
import org.icepdf.ri.common.SwingViewBuilder;

import javax.swing.JTree;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import java.awt.Color;

public class MainGUI extends JFrame
{
	
	private static final long serialVersionUID = 1L;
	
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
		{
			@Override
			public void run()
			{
				try
				{
					MainGUI frame = new MainGUI();
					frame.setVisible(true);
				}
				catch (Exception e)
				{
					e.printStackTrace();
				}
			}
		});
	}
	
	public MainGUI()
	{
		getContentPane().setBackground(Color.WHITE);
		setBackground(Color.WHITE);
		setResizable(false);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		setBounds(100, 100, 1225, 750);
		getContentPane().setLayout(null);
		
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("библиотека");
		DefaultMutableTreeNode vanshno = new DefaultMutableTreeNode("Външно тяло");
		DefaultMutableTreeNode NodeSM = new DefaultMutableTreeNode("Вътрешно тяло");
		DefaultMutableTreeNode NodeOL = new DefaultMutableTreeNode("Конвектори");
		DefaultMutableTreeNode NodeSL = new DefaultMutableTreeNode("test");
		root.add(NodeSM);
		root.add(vanshno);
		root.add(NodeSL);
		root.add(NodeOL);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 11, 192, 682);
		getContentPane().add(scrollPane);
		
		JTree tree = new JTree(root);
		scrollPane.setViewportView(tree);
		
		tree.addTreeSelectionListener(new TreeSelectionListener()
		{
			@Override
			public void valueChanged(TreeSelectionEvent e)
			{
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
				/* if nothing is selected */
				if (node == null)
					return;
				
				/* retrieve the node that was selected */
				Object nodeInfo = node.getUserObject();
				/* React to the node selection. */
				System.out.println(nodeInfo);
				
				String filePath = String.valueOf("resources/" + nodeInfo + ".pdf");
				// build a controller
				SwingController controller = new SwingController();
				
				// Build a SwingViewFactory configured with the controller
				SwingViewBuilder factory = new SwingViewBuilder(controller);
				
				// Use the factory to build a JPanel that is pre-configured
				// with a complete, active Viewer UI.
				JPanel viewerComponentPanel = factory.buildViewerPanel();
				
				// add copy keyboard command
				ComponentKeyBinding.install(controller, viewerComponentPanel);
				
				// add interactive mouse link annotation support via callback
				controller.getDocumentViewController().setAnnotationCallback(new org.icepdf.ri.common.MyAnnotationCallback(controller.getDocumentViewController()));
				
				getContentPane().add(viewerComponentPanel);
				viewerComponentPanel.setBounds(212, 11, 1000, 695);
				
				// Open a PDF document to view
				controller.openDocument(filePath);
				
			}
		});
		
		JLabel clima = new JLabel(new ImageIcon("resources/clima.jpg"));
		clima.setBounds(225, 11, 984, 680);
		getContentPane().add(clima);
		
		String[] countries = new String[]
		{
			"MSZ-LN25VGW",
			"MSZ-LN35VGW",
			"MSZ-LN50VGW",
			"MSZ-LN60VGW",
			"MSZ-LN25VGB",
			"MSZ-LN35VGB",
			"MSZ-LN50VGB",
			"MSZ-LN60VGB",
			"MSZ-LN25VGV",
			"MSZ-LN35VGV",
			"MSZ-LN50VGV",
			"MSZ-LN60VGV",
			"MSZ-LN25VGR",
			"MSZ-LN35VGR",
			"MSZ-LN50VGR",
			"MSZ-LN60VGR"
		};
		for (String country : countries)
		{
			DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
			NodeSM.add(node);
		}
		String[] vanshnos = new String[]
		{
			"MUZ-DM25VA",
			"MUZ-DM35VA",
			"MUZ-AP25VG",
			"MUZ-AP35VG",
			"MUZ-AP42VG",
			"MUZ-AP50VG",
			"MUZ-AP60VG",
			"MUZ-AP71VG",
			"MUZ-AP25VGH",
			"MUZ-AP35VGH",
			"MUZ-AP42VGH",
			"MUZ-AP50VGH",
			"MUZ-HR25VF",
			"MUZ-HR35VF",
			"MUZ-HR42VF",
			"MUZ-HR50VF",
			"MUZ-EF25VG",
			"MUZ-EF35VG",
			"MUZ-EF42VG",
			"MUZ-EF50VG",
			"MUZ-EF25VGH",
			"MUZ-EF35VGH",
			"MUZ-EF25VE",
			"MUZ-EF25VEH",
			"MUZ-EF35VE",
			"MUZ-EF35VEH",
			"MUZ-EF42VE",
			"MUZ-EF50VE",
			"MUZ-FH25VE",
			"MUZ-FH35VE",
			"MUZ-FH50VE",
			"MUZ-FH25VEHZ",
			"MUZ-FH35VEHZ",
			"MUZ-FH50VEHZ",
			"MUZ-LN25VG",
			"MUZ-LN35VG",
			"MUZ-LN50VG",
			"MUZ-LN60VG"
		
		};
		for (String country : vanshnos)
		{
			DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
			vanshno.add(node);
		}
		String[] countries3 = new String[]
		{
			"test",
			"test",
			"test",
			"test"
		};
		for (String country : countries3)
		{
			DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
			NodeSL.add(node);
		}
		String[] countries4 = new String[]
		{
			"test",
			"test",
			"test",
			"test"
		};
		for (String country : countries4)
		{
			DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
			NodeOL.add(node);
		}
	}
}

 

Без име.jpg

Така става като намажеш лейаут-ът.

Остави този който е по подразбиране (BorderLayout) и посочи къде искаш да добавиш контролите: LINE_START за панелът на tree контрола и CENTER за pdf изгледът.

Друг вариант е да използваш JSplitPane в който да добавиш двата панела. Така ще получиш възможност динамично да си променяш широчината на панелите. При това положение също се запазва лейаутът на JFrame а сплит панелът се поставя в центъра. Така имаш възможност да поставиш меню от горе и статус бар от долу,

Като цяло НИКОГА не работи без layout мениджър, освен ако не ползваш собствен такъв.

Относно втората част от въпроса - декларирай възлите като final така ще имаш достъп до тях в анонимната инстанция на слушателя и ще можеш да проверяваш дали те са източникът на събитието което не искаш да обработваш (всъщност, хубаво е да го обработваш и да показваш някакъв панел по подразбиране - обикновено се ползва празен тъмносив панел с LoweredBevelBorder.

  • Автор
преди 7 часа, mr mcwolf написа:

Така става като намажеш лейаут-ът.

Остави този който е по подразбиране (BorderLayout) и посочи къде искаш да добавиш контролите: LINE_START за панелът на tree контрола и CENTER за pdf изгледът.

Друг вариант е да използваш JSplitPane в който да добавиш двата панела. Така ще получиш възможност динамично да си променяш широчината на панелите. При това положение също се запазва лейаутът на JFrame а сплит панелът се поставя в центъра. Така имаш възможност да поставиш меню от горе и статус бар от долу,

Като цяло НИКОГА не работи без layout мениджър, освен ако не ползваш собствен такъв.

Относно втората част от въпроса - декларирай възлите като final така ще имаш достъп до тях в анонимната инстанция на слушателя и ще можеш да проверяваш дали те са източникът на събитието което не искаш да обработваш (всъщност, хубаво е да го обработваш и да показваш някакъв панел по подразбиране - обикновено се ползва празен тъмносив панел с LoweredBevelBorder.

Благодаря за съвета заемам се :)🙏

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.