将textView和Image对齐在同一行JAVA上 [英] Align textView and Image on same line JAVA

查看:99
本文介绍了将textView和Image对齐在同一行JAVA上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码创建食物标签

  JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane。最佳); 
addIt(tabbedPane,Foods);
addIt1(tabbedPane,Drinks);
addIt1(tabbedPane,Desserts);
tabbedPane.setBounds(10,11,400,450);
frame.getContentPane()。add(tabbedPane);

此处 addIt 方法

  static void addIt(JTabbedPane tabbedPane,String text)抛出IOException {
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
JTextField textField = new JTextField(2);

BufferedImage myPicture = ImageIO.read(new file(C:\\Users\\\\\\Desktop\\MedSalad.png));
Image scaled = myPicture.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel =新的JLabel(沙拉,新的ImageIcon(缩放),JLabel.CENTER);
picLabel.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField1 = new JTextField(2);
BufferedImage myPicture1 = ImageIO.read(新文件(C:\\Users \\tony\\Desktop\\ JapapanPoodles));
Image scaled1 = myPicture1.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel1 =新JLabel(日本面条,新ImageIcon(scaled1),JLabel.CENTER);
picLabel1.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel1.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField2 = new JTextField(2);
BufferedImage myPicture2 = ImageIO.read(new file(C:\\Users\\\\\\Desktop\\ Spaghetti.png));
Image scaled2 = myPicture2.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel2 =新的JLabel(Spaghetti,新的ImageIcon(scaled2),JLabel.CENTER);
picLabel2.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel2.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField3 = new JTextField(2);
BufferedImage myPicture3 = ImageIO.read(new file(C:\\Users\\\\\\Desktop\\PadThai.png));
Image scaled3 = myPicture3.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel3 =新的JLabel(Spaghetti Meat Balls,新的ImageIcon(scaled3),JLabel.CENTER);
picLabel3.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel3.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField4 = new JTextField(2);
BufferedImage myPicture4 = ImageIO.read(new File(C:\\Users\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Image scaled4 = myPicture4.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel4 =新的JLabel(Noodles,新的ImageIcon(scaled4),JLabel.CENTER);
picLabel4.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel4.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField5 = new JTextField(2);
BufferedImage myPicture5 = ImageIO.read(新文件(C:\\Users\\\\\\\\\\\\\\\\\\\\\\\\\\
Image scaled5 = myPicture5.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel5 =新的JLabel(Kids Spaghetti,新的ImageIcon(scaled5),JLabel.CENTER);
picLabel5.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel5.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField6 = new JTextField(2);
BufferedImage myPicture6 = ImageIO.read(new File(C:\\Users\\tony\\Desktop\\chickenRice.jpg));
Image scaled6 = myPicture6.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel6 =新JLabel(鸡饭,新ImageIcon(scaled6),JLabel.CENTER);
picLabel6.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel6.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField7 = new JTextField(2);
BufferedImage myPicture7 = ImageIO.read(新文件(C:\\Users\\\\\\\\\\\\\\\\\\\\\\\\\\\
Image scaled7 = myPicture7.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel7 =新的JLabel(泰国食品,新的ImageIcon(scaled7),JLabel.CENTER);
picLabel7.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel7.setVerticalTextPosition(JLabel.BOTTOM);

JTextField textField8 = new JTextField(2);
BufferedImage myPicture8 = ImageIO.read(new File(C:\\Users\\\\\\\\\\\\\\\\\\\\\\
Image scaled8 = myPicture8.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel8 =新的JLabel(越南食品,新的ImageIcon(scaled8),JLabel.CENTER);
picLabel8.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel8.setVerticalTextPosition(JLabel.BOTTOM);
panel.add(picLabel);
panel.add(textField);
panel.add(picLabel1);
panel.add(textField1);
panel.add(picLabel2);
panel.add(textField2);
panel.add(picLabel3);
panel.add(textField3);
panel.add(picLabel4);
panel.add(textField4);
panel.add(picLabel5);
panel.add(textField5);
panel.add(picLabel6);
panel.add(textField6);
panel.add(picLabel7);
panel.add(textField7);
panel.add(picLabel8);
panel.add(textField8);
tabbedPane.addTab(text,panel);
}

这里是食物标签 <的屏幕截图/ p>



MainClass

  public class FoodOrdering {

private JFrame frame;
private JTextField textField;

public static void main(String [] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
try {
FoodOrdering window = new FoodOrdering();
window.frame.setVisible(true);
} catch(Exception e){
e.printStackTrace();
}
}
});
}

public FoodOrdering()抛出IOException {
initialize();
}

private void initialize()抛出IOException {
frame = new JFrame();
frame.setBounds(100,100,700,550);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane()。setLayout(null);
frame.setLocationRelativeTo(null);

JLabel lblFoodOrdered =新JLabel(食品订购);
lblFoodOrdered.setBounds(529,11,81,14);
frame.getContentPane()。add(lblFoodOrdered);

TextArea textArea = new TextArea();
textArea.setBounds(462,31,199,275);
frame.getContentPane()。add(textArea);

JLabel lblTotal = new JLabel(Total:);
lblTotal.setBounds(519,315,46,14);
frame.getContentPane()。add(lblTotal);

textField = new JTextField();
textField.setBounds(575,312,86,20);
frame.getContentPane()。add(textField);
textField.setColumns(10);

JButton btnOrder = new JButton(Order);
btnOrder.setBounds(521,352,89,23);
frame.getContentPane()。add(btnOrder);

JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
addIt(tabbedPane,Foods);
addIt1(tabbedPane,Drinks);
addIt1(tabbedPane,Desserts);
tabbedPane.setBounds(23,11,400,450);
frame.getContentPane()。add(tabbedPane);
}

如何对齐图片 JTextField 在同一行?

解决方案

我不喜欢没有要测试的图像,问题中没有有效的 MCVE ,但是从我看到的内容中你可以尝试(按顺序)优先选择)




  • 使用 GridBagLayout 而不是 FlowLayout 你'目前正在使用,这将有助于将您的图像放在网格中并将其对齐。


  • 使用 GridLayout 这将使您的图像和 JTextField s大小相同,并将它们放在相同大小的网格中,每个组件。


  • 调整大小r图像大小相同,然后才能获得 getScaledInstance(...)




顺便说一下,这个 tabbedPane.setBounds(10,11,400,450); 表明在代码的某些方面,你正在使用 null 布局,你应该知道 null布局是邪恶的,因此它的用途是不赞成。如果您没有在任何地方使用 null 布局(我们无法知道因为我们在问题中没有该代码),那么,需要该行。



此外,您可以通过包含所有相同的功能来改善您的代码:

  JTextField textField1 = new JTextField(2); 
BufferedImage myPicture1 = ImageIO.read(新文件(C:\\Users \\tony\\Desktop\\ JapapanPoodles));
Image scaled1 = myPicture1.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel1 =新JLabel(日本面条,新ImageIcon(scaled1),JLabel.CENTER);
picLabel1.setHorizo​​ntalTextPosition(JLabel.CENTER);
picLabel1.setVerticalTextPosition(JLabel.BOTTOM);

在接收图像名称和标签文本的方法中,因为其余代码是相同的到其他的,然后你可以在循环中调用该方法,这可以真正改善你编写的代码,易读性和简单性。






根据我的上述建议,您可以使用 GridBagLayout 使用 GridBagConstraints 将元素放置在您的位置想要,避免使用 null 布局:

  frame.getContentPane( ).setLayout(NULL); //完全错误!!!!!! 

在这个例子中,我使用了两个不同大小的图像,所以,你可以看到,即便像那个,你的字段将保持相同的大小。



以下代码是MCVE,你发布的代码不是(我很惊讶你差不多3K 代表不知道如何制作合适的MCVE)

  import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

公共类FoodMenu {
私人JFrame框架;
私人JPanel窗格;
private GridBagConstraints gbc;
私人JLabel [] foodLabel;
private JTextField [] qtyField;

private static final int ELEMENTS = 9;

public static void main(String [] args){
SwingUtilities.invokeLater(() - > new FoodMenu()。createAndShowGui());
}

private void createAndShowGui(){
frame = new JFrame(getClass()。getSimpleName());

pane = new JPanel();
pane.setLayout(new GridBagLayout());

gbc = new GridBagConstraints();

foodLabel = new JLabel [ELEMENTS];
qtyField = new JTextField [ELEMENTS];

ImageIcon icon = null,icon2 = null;
try {
URL url = new URL(https://image.flaticon.com/icons/png/128/148/148836.png);
网址url2 =新网址(https://i.stack.imgur.com/IucNt.png);
BufferedImage img = ImageIO.read(url);
icon = new ImageIcon(img);
BufferedImage img2 = ImageIO.read(url2);
icon2 = new ImageIcon(img2);
} catch(MalformedURLException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}

for(int i = 0; i< ELEMENTS; i ++){
foodLabel [i] = new JLabel(i%2 == 0?icon:icon2 );
qtyField [i] = new JTextField(3);
}

gbc.gridx = 0;
for(int i = 0; i< ELEMENTS; i ++){
if(i%3 == 0){
gbc.gridy ++;
gbc.gridx = 0;
}
pane.add(foodLabel [i],gbc);

gbc.gridx ++;
pane.add(qtyField [i],gbc);
gbc.gridx ++;
}

frame.add(窗格);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}


但是如何在食物图像下方显示食物标签?


更改为循环,如下所示

  gbc.gridx = 0; 
for(int i = 0; i< ELEMENTS; i ++){
if(i%3 == 0){
gbc.gridy + = 2;
gbc.gridx = 0;
}
pane.add(foodLabel [i],gbc);
gbc.gridy ++;
pane.add(qtyField [i],gbc);
gbc.gridx ++;
gbc.gridy--;
}


I created the Food tab using code below

JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
addIt(tabbedPane, "Foods");
addIt1(tabbedPane, "Drinks");
addIt1(tabbedPane, "Desserts");
tabbedPane.setBounds(10, 11, 400, 450);
frame.getContentPane().add(tabbedPane);

Here the addIt methods

static void addIt(JTabbedPane tabbedPane, String text) throws IOException {
    JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    JTextField textField = new JTextField(2);

    BufferedImage myPicture = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\MedSalad.png"));
    Image scaled = myPicture.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel = new JLabel("Salad",new ImageIcon(scaled),JLabel.CENTER);
    picLabel.setHorizontalTextPosition(JLabel.CENTER);
    picLabel.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField1 = new JTextField(2);
    BufferedImage myPicture1 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\JapanesePanNoodles.png"));
    Image scaled1 = myPicture1.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel1 = new JLabel("Japanese Noodles",new ImageIcon(scaled1),JLabel.CENTER);
    picLabel1.setHorizontalTextPosition(JLabel.CENTER);
    picLabel1.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField2 = new JTextField(2);
    BufferedImage myPicture2 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\Spaghetti.png"));
    Image scaled2 = myPicture2.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel2 = new JLabel("Spaghetti",new ImageIcon(scaled2),JLabel.CENTER);
    picLabel2.setHorizontalTextPosition(JLabel.CENTER);
    picLabel2.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField3 = new JTextField(2);
    BufferedImage myPicture3 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\PadThai.png"));
    Image scaled3 = myPicture3.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel3 = new JLabel("Spaghetti Meat Balls",new ImageIcon(scaled3),JLabel.CENTER);
    picLabel3.setHorizontalTextPosition(JLabel.CENTER);
    picLabel3.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField4 = new JTextField(2);
    BufferedImage myPicture4 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\RamenNoodles.png"));
    Image scaled4 = myPicture4.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel4 = new JLabel("Noodles",new ImageIcon(scaled4),JLabel.CENTER);
    picLabel4.setHorizontalTextPosition(JLabel.CENTER);
    picLabel4.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField5 = new JTextField(2);
    BufferedImage myPicture5 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\SpaghettiAndMeatBalls.png"));
    Image scaled5 = myPicture5.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel5 = new JLabel("Kids Spaghetti",new ImageIcon(scaled5),JLabel.CENTER);
    picLabel5.setHorizontalTextPosition(JLabel.CENTER);
    picLabel5.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField6 = new JTextField(2);
    BufferedImage myPicture6 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\chickenRice.jpg"));
    Image scaled6 = myPicture6.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel6 = new JLabel("Chicken Rice",new ImageIcon(scaled6),JLabel.CENTER);
    picLabel6.setHorizontalTextPosition(JLabel.CENTER);
    picLabel6.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField7 = new JTextField(2);
    BufferedImage myPicture7 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\thaiFood.jpeg"));
    Image scaled7 = myPicture7.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel7 = new JLabel("Thai Food",new ImageIcon(scaled7),JLabel.CENTER);
    picLabel7.setHorizontalTextPosition(JLabel.CENTER);
    picLabel7.setVerticalTextPosition(JLabel.BOTTOM);

    JTextField textField8 = new JTextField(2);
    BufferedImage myPicture8 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\vietnamFood.jpg"));
    Image scaled8 = myPicture8.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    JLabel picLabel8 = new JLabel("Vietnam Food",new ImageIcon(scaled8),JLabel.CENTER);
    picLabel8.setHorizontalTextPosition(JLabel.CENTER);
    picLabel8.setVerticalTextPosition(JLabel.BOTTOM);   
    panel.add(picLabel);
    panel.add(textField);   
    panel.add(picLabel1);
    panel.add(textField1);
    panel.add(picLabel2);
    panel.add(textField2);
    panel.add(picLabel3);
    panel.add(textField3);
    panel.add(picLabel4);
    panel.add(textField4);
    panel.add(picLabel5);
    panel.add(textField5);
    panel.add(picLabel6);
    panel.add(textField6);
    panel.add(picLabel7);
    panel.add(textField7);
    panel.add(picLabel8);
    panel.add(textField8);
    tabbedPane.addTab(text, panel);
}

And here the screen shot of Food Tab

MainClass

public class FoodOrdering {

    private JFrame frame;
    private JTextField textField;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    FoodOrdering window = new FoodOrdering();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public FoodOrdering() throws IOException {
        initialize();
    }

    private void initialize() throws IOException {
        frame = new JFrame();
        frame.setBounds(100, 100, 700, 550);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        frame.setLocationRelativeTo(null);

        JLabel lblFoodOrdered = new JLabel("Food Ordered");
        lblFoodOrdered.setBounds(529, 11, 81, 14);
        frame.getContentPane().add(lblFoodOrdered);

        TextArea textArea = new TextArea();
        textArea.setBounds(462, 31, 199, 275);
        frame.getContentPane().add(textArea);

        JLabel lblTotal = new JLabel("Total  : ");
        lblTotal.setBounds(519, 315, 46, 14);
        frame.getContentPane().add(lblTotal);

        textField = new JTextField();
        textField.setBounds(575, 312, 86, 20);
        frame.getContentPane().add(textField);
        textField.setColumns(10);

        JButton btnOrder = new JButton("Order");
        btnOrder.setBounds(521, 352, 89, 23);
        frame.getContentPane().add(btnOrder);

        JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
        addIt(tabbedPane, "Foods");
        addIt1(tabbedPane, "Drinks");
        addIt1(tabbedPane, "Desserts");
        tabbedPane.setBounds(23, 11, 400, 450);
        frame.getContentPane().add(tabbedPane);
    }

How can I align the picture, JTextField in the same line ?

解决方案

I don't have images to test, there's no valid MCVE in the question, however from what I see in it you could try (in order of preference)

  • Using GridBagLayout instead of FlowLayout that you're currently using, this will help placing your images in a grid and align them in it.

  • Using GridLayout which will make your images and JTextFields the same size and placing them in a grid of the same size, each component.

  • Resizing your images to be all the same size, before getting their getScaledInstance(...)

BTW, this tabbedPane.setBounds(10, 11, 400, 450); suggests that in some point of your code, you're using null layout, you should know that null layout is evil and thus it's use is frowned upon. If you're not using null layout anywhere (we can't know because we don't have that code in the question), then, that line is needed.

Also, you could improve your code by wrapping all the same functionality like this:

JTextField textField1 = new JTextField(2);
BufferedImage myPicture1 = ImageIO.read(new File("C:\\Users\\tony\\Desktop\\JapanesePanNoodles.png"));
Image scaled1 = myPicture1.getScaledInstance(80,95,Image.SCALE_SMOOTH);
JLabel picLabel1 = new JLabel("Japanese Noodles",new ImageIcon(scaled1),JLabel.CENTER);
picLabel1.setHorizontalTextPosition(JLabel.CENTER);
picLabel1.setVerticalTextPosition(JLabel.BOTTOM);

inside a method where it receives the image name and label text, as the rest of the code is identical to the other ones, and then you could call that method inside a loop, that could really improve the code written by you, legibility and simplicity.


From my above recommendations, you can use GridBagLayout using the GridBagConstraints to place your elements where you want, avoiding the use of null layout:

frame.getContentPane().setLayout(null); //COMPLETELY WRONG!!!!!!

In this example, I used two images of different sizes, so, you can see, that even like that, your fields will stay the same size.

The following code is a MCVE, the one you posted isn't (and I'm surprised of you having almost 3K rep not knowing how to make a proper MCVE)

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class FoodMenu {
    private JFrame frame;
    private JPanel pane;
    private GridBagConstraints gbc;
    private JLabel[] foodLabel;
    private JTextField[] qtyField;

    private static final int ELEMENTS = 9;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new FoodMenu().createAndShowGui());
    }

    private void createAndShowGui() {
        frame = new JFrame(getClass().getSimpleName());

        pane = new JPanel();
        pane.setLayout(new GridBagLayout());

        gbc = new GridBagConstraints();

        foodLabel = new JLabel[ELEMENTS];
        qtyField = new JTextField[ELEMENTS];

        ImageIcon icon = null, icon2 = null;
        try {
            URL url = new URL("https://image.flaticon.com/icons/png/128/148/148836.png");
            URL url2 = new URL("https://i.stack.imgur.com/IucNt.png");
            BufferedImage img = ImageIO.read(url);
            icon = new ImageIcon(img);
            BufferedImage img2 = ImageIO.read(url2);
            icon2 = new ImageIcon(img2);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        for (int i = 0; i < ELEMENTS; i++) {
            foodLabel[i] = new JLabel(i % 2 == 0 ? icon : icon2);
            qtyField[i] = new JTextField(3);
        }

        gbc.gridx = 0;
        for (int i = 0; i < ELEMENTS; i++) {
            if (i % 3 == 0) {
                gbc.gridy++;
                gbc.gridx = 0;
            }
            pane.add(foodLabel[i], gbc);

            gbc.gridx++;
            pane.add(qtyField[i], gbc);
            gbc.gridx++;
        }

        frame.add(pane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

But how can I display the food label below the food image ?

Change the for loop as below

gbc.gridx = 0;
for (int i = 0; i < ELEMENTS; i++) {
    if (i % 3 == 0) {
        gbc.gridy += 2;
        gbc.gridx = 0;
    }
    pane.add(foodLabel[i], gbc);
    gbc.gridy++;
    pane.add(qtyField[i], gbc);
    gbc.gridx++;
    gbc.gridy--;
}

这篇关于将textView和Image对齐在同一行JAVA上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆