I have created a layout for a basic text editor, I would like the top bar to have the buttons alligned to the left, the top bar is a JPanel and it is using the FlowLayout manager. It is inside of a grid using the GridBag layout manager. Any suggestions?
import java.awt.*;
import javax.swing.*;
public class GridTest {
private static JButton firstButton, secondButton, thirdButton;
private static JPanel panel, sidebar, infoPanel;
private static JTextArea textArea;
public static void addComponentsToPane(Container container) {
container.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
firstButton = new JButton("Button 1");
secondButton = new JButton("Button 2");
thirdButton = new JButton("Button 3");
panel = new JPanel(new FlowLayout());
sidebar = new JPanel(new FlowLayout());
infoPanel = new JPanel(new FlowLayout());
textArea = new JTextArea("This is some generic text!");
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 0;
c.weighty = 0;
c.weightx = 1;
c.gridx = 0;
c.gridwidth = 3;
c.gridy = 0;
c.anchor = GridBagConstraints.LINE_START;
container.add(panel, c);
panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
panel.setBorder(BorderFactory.createLineBorder(Color.black));
panel.add(firstButton);
panel.add(secondButton);
panel.add(thirdButton);
c.fill = GridBagConstraints.BOTH;
c.ipady = 300;
c.ipadx = 100;
c.weighty = 1;
c.weightx = 0;
c.gridx = 0;
c.gridheight = 2;
c.gridwidth = 1;
c.gridy = 1;
container.add(sidebar, c);
sidebar.setBorder(BorderFactory.createLineBorder(Color.black));
c.fill = GridBagConstraints.BOTH;
c.ipady = 40;
c.weightx = 1;
c.weighty = 1;
c.gridwidth = 2;
c.gridheight = 1;
c.gridx = 1;
c.gridy = 1;
container.add(textArea, c);
textArea.setFont(new Font("Serif", Font.ITALIC, 16));
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
c.fill = GridBagConstraints.HORIZONTAL;
c.ipady = 20;
c.weighty = 0;
c.weightx = 0;
c.anchor = GridBagConstraints.PAGE_END;
c.gridx = 1;
c.gridwidth = 2;
c.gridy = 2;
container.add(infoPanel, c);
infoPanel.setBorder(BorderFactory.createLineBorder(Color.black));
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Grid test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponentsToPane(frame.getContentPane());
frame.setSize(800,600);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Consider using a JToolBar
instead of a JPanel
, as it has it's own layout manager, which, basically, does this any way.
Images from following tutorial...
Check out How to use Tool Bars for more details
一种方法:将FlowLayout更改为更喜欢将其组件放在左侧的FlowLayout:
panel = new JPanel(new FlowLayout(FlowLayout.LEADING));
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.