मैं जावा में जीयूआई का उपयोग करने के लिए पूरी तरह से नया हूं, इसलिए मुझे कुछ परेशानी हो रही है कि मुझे जो कुछ भी चाहिए उसे संरेखित करना है। मुझे अपने जेएफआरएएम में पैनल करना है कि मुझे पैनल में केंद्रित होने की आवश्यकता वाले पैनलों में से एक में बाएं (एक बाएं, दाएं से एक) और कुछ बटनों को संरेखित करने की आवश्यकता है। मेरा कोड यहाँ है।मैं जेपीनेल/जेएफआरम्स में तत्वों को कैसे संरेखित कर सकता हूं?
package application;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.nio.*;
import java.util.*;
public class Main extends JPanel
{
public static void main(String[] args)
{
//set the ui to the native OS
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException e)
{
}
JFrame frame = new JFrame("Application Name");
Menu menu = new Menu();
JPanel iconPanel = new JPanel();
final JPanel grid = new JPanel(new FlowLayout());
JButton firewallButton = new JButton("Firewall");
JButton networkButton = new JButton("Network");
JButton printerButton = new JButton("Printer");
int iconPanelSizeX;
int iconPanelSizeY;
int gridSizeX;
int gridSizeY;
int gridPosition;
//frame setting
frame.setSize(800, 600);
frame.setMinimumSize(new Dimension(800, 600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//add grid and iconPanel JPanels to the frame
frame.add(iconPanel);
iconPanel.add(firewallButton);
iconPanel.add(networkButton);
iconPanel.add(printerButton);
frame.add(grid);
//iconPanel settings
iconPanel.setBorder(BorderFactory.createLoweredSoftBevelBorder());
iconPanel.setBackground(Color.gray);
iconPanel.setLayout(new FlowLayout());
iconPanel.setSize(new Dimension(100, 600));
iconPanel.setVisible(true);
//grid setting
grid.setBackground(Color.red);
grid.setSize(new Dimension(700, 600));
grid.setVisible(true);
//this is for resizing components when the user resizes the window
int counter = 0;
while(counter == 0)
{
firewallButton.setSize(new Dimension(iconPanel.getWidth(), 50));
networkButton.setSize(new Dimension(iconPanel.getWidth(), 50));
printerButton.setSize(new Dimension(iconPanel.getWidth(), 50));
iconPanelSizeX = frame.getWidth()/10;
iconPanelSizeY = frame.getHeight();
gridSizeX = (frame.getWidth()/10) * 9;
gridSizeY = frame.getHeight();
iconPanel.setSize(new Dimension(iconPanelSizeX, iconPanelSizeY));
grid.setSize(new Dimension(gridSizeX, gridSizeY));
}
}
}
आप देख सकते हैं, दूसरी JPanel (ग्रिड) फ्रेम के दाईं ओर के साथ नहीं मिलाया गया है, और iconTray अंदर बटन या तो केंद्र नहीं है। मुझे एहसास है कि ये शायद दोनों सरल लेआउट फिक्स हैं, लेकिन मुझे कोई संकेत नहीं है कि कहां से शुरू किया जाए।
धन्यवाद, यह बहुत मदद की। वास्तव में एक बात है जिसे मैं पूछना भूल गया था, और यही है कि बटन को लंबवत रूप से संरेखित करना है - मुझे कुछ बाद में जोड़ना है। 'पैक() 'के लिए – user2067364
+1; अधिक [यहां] (http://stackoverflow.com/a/14927280/230513)। – trashgod
आपको कुछ अन्य लेआउट प्रबंधक का उपयोग करना होगा। बहुत ही बुनियादी संरेखण के लिए आप 'ग्रिडलाउट' या 'बॉक्सलाउट' का उपयोग कर सकते हैं, लेकिन कुछ और जटिल के लिए मैं 'ग्रिडबैडआउटआउट' या 'मिगलाउट' के उपयोग का सुझाव देता हूं। बस उस पर गूगल। –