Położenie ToolBaru

0

Witam męczę się z tym od 10 minut jak ustawić położenie ToolBaru tak żeby np. był na dole lub z boku? Od razu tworzy się z góry. Próbowałem sposobu z dokumentacji

add(toolbar,BorderLayout.PAGE_END); 

ale nic to nie daje :/ Z góry dziękuję za odpowiedź :)

0

Na dole

add(toolbar,BorderLayout.SOUTH);

Z boku

add(toolbar,BorderLayout.EAST);
//lub
add(toolbar,BorderLayout.WEST);

Warto wtedy wybrać jakiś wertykalny layout.

0

Nie działa :/ żadna z opcji

0

pics or it didn't happen,
Pokaż cały kod konstruujący okno i rozmieszczający komponenty.

0

Panel

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;

import javax.swing.JPanel;
import javax.swing.JToolBar;

public class MyPanel extends JPanel implements MouseListener, MouseMotionListener{
	private static final int WIDTH=500;
	private static final int HEIGHT=400;
	int x,y;
	JToolBar kit;
	ArrayList<Point> points=new ArrayList<Point>();
	public MyPanel(){
		kit=new JToolBar("Kit");
		add(kit,BorderLayout.EAST);
		kit.setPreferredSize(new Dimension(550,50));
		kit.setFloatable(false);
		setPreferredSize(new Dimension(WIDTH,HEIGHT));
		addMouseListener(this);
		addMouseMotionListener(this);
	}
	
	@Override
	public void mouseDragged(MouseEvent e) {
		// TODO Auto-generated method stub
		x=e.getX();
		y=e.getY();
		if (y>50){
			points.add(new Point(x,y));
			repaint();
		}
		
	}

	@Override
	public void mouseMoved(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	protected void paintComponent(Graphics g){
		super.paintComponent(g);
		Graphics2D g2d=(Graphics2D) g;
		g2d.setColor(Color.WHITE);
		g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
		g2d.setColor(Color.black);
		drawRectangles(g2d);
	}
	
	private void drawRectangles(Graphics2D g2d){
		int x,y;
		for (Point p:points){
			x=(int)p.getX();
			y=(int)p.getY();
			g2d.fillRect(x, y, 10, 10);
		}
	}
}

 

Ramka

 import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame extends JFrame{
	public MyFrame(){
		super ("Paint");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel panel=new MyPanel();
		add(panel);
		pack();
		setResizable(false);
		setVisible(true);
	}
}

Test

import java.awt.EventQueue;

public class Test {
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				new MyFrame();
			}
		});
	}
} 
1

Aby

add(kit,BorderLayout.EAST);

zadziałało zgodnie z oczekiwaniami, to kontener musi mieć BorderLayout. JFrame ma BorderLayout domyślnie, JPanel nie (domyślnie ma FlowLayout). Albo zmień layout w MyPanel, albo dodawaj toolbar do MyFrame.
Obejrzałem kod dokładniej - zastosuj drugie rozwiązanie, tzn. dodaj toolbar do MyFrame.

0

@bogdans w ten sposób?

 import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;

public class MyFrame extends JFrame{
	JToolBar kit;
	public MyFrame(){
		super ("Paint");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel panel=new MyPanel();		
		kit=new JToolBar("Kit");
		kit.setPreferredSize(new Dimension(500,50));
		
		add(panel);
		panel.add(kit);

		pack();
		setResizable(false);
		setVisible(true);
	}
}

bo to rozwiązanie nie działa

 import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;

public class MyFrame extends JFrame{
	JToolBar kit;
	public MyFrame(){
		super ("Paint");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel panel=new MyPanel();		
		kit=new JToolBar("Kit");
		kit.setPreferredSize(new Dimension(500,50));
		
		add(panel); // nie dodaje się panel
		add(kit);

		pack();
		setResizable(false);
		setVisible(true);
	}
}
1

Dodając komponent do JFrame z rozkładem BorderLayout musisz podać gdzie dodać. Jeśli tego nie zrobisz, to komponent dodawany jest w obszarze CENTER, w konsekwencji po dodaniu kilku komponentów widać tylko ten komponent, który był dodany ostatni.

add(panel,BorderLayout.CENTER); //BorderLayout.CENTER można pominąć
add(kit,BorderLayout.EAST);
0

Działa pięknie :) WIELKIE DZIĘKI :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1