gpt4 book ai didi

java - 无法更改 JTable 的位置和大小

转载 作者:行者123 更新时间:2023-11-30 02:50:05 25 4
gpt4 key购买 nike

我正在用 Java 制作一个 JTable

这是我的代码。我已将表格放在面板上 (jtjp1),jtjp1 放在 adminjp1 上。adminjp1 放在 adminjf1

代码

 package Hotel_room_reservation_system;

import java.io.*;
import java.lang.*;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.util.*;
import javax.swing.table.*;

public class Hotel_room_reservation_system extends JFrame implements ActionListener {

public JFrame adminjf1;
public JTable jt1;
public JPanel adminjp1;
public JPanel jtjp1;

public Hotel_room_reservation_system() {
guimake();
}

public void guimake() {
adminjf1 = new JFrame("ADMIN");

adminjp1 = new JPanel();
jtjp1 =new JPanel(new BorderLayout());
jt1=new JTable();
String[] columns = {"Name", "Age", "Gender"};

String[][] data = {{"John", "18", "Male"},
{"Daisy", "19", "Female"},
{"Dave", "23", "Male"},
{"Jake", "30", "Male"}};

jt1 = new JTable(data, columns)
{
public boolean isCellEditable(int data, int columns)
{
return false;
}


public Component prepareRenderer(TableCellRenderer r, int data, int columns)
{
Component c = super.prepareRenderer(r, data, columns);

if ((data % 2 == 0))
c.setBackground(Color.WHITE);

else
c.setBackground(Color.LIGHT_GRAY);

return c;
}
};



JScrollPane jps = new JScrollPane(jt1);
// jt1.setFillsViewportHeight(true);
jt1.setFillsViewportHeight(true);
jtjp1.setLocation(10,10);

adminjf1.setSize(900, 900);
adminjf1.setLayout(null);
adminjp1.setBackground(Color.WHITE);
adminjp1.setSize(800, 800);
jtjp1.setSize(550,180);
jtjp1.setBackground(Color.red);


adminjp1.setLocation(20, 25);
jtjp1.add(jps);
adminjp1.add(jtjp1);
adminjf1.add(adminjp1);
adminjf1.setVisible(true);
}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Hotel_room_reservation_system();
}
});
}

@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}

问题

  1. 我无法移动名为 jtjp1 的面板的大小。
  2. 我无法向左或向下更改 jtjp1 的位置。我已将 jtjp1 放在 adminjp1 上。

最佳答案

表格组件未调整大小的原因是您使用 setLayout(null) 设置了所谓的空布局管理器。设置此项意味着您应该负责在 GUI 中定位组件并调整其大小。这就是布局管理器所做的事情。

使用布局管理器(例如 GroupLayout)后,该示例将如下所示预计。

package com.zetcode;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import javax.swing.GroupLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.TableCellRenderer;

public class HotelReservationSystemEx extends JFrame {

private JTable table;

public HotelReservationSystemEx() {

initUI();
}

private void initUI() {

String[] columns = {"Name", "Age", "Gender"};

String[][] data = {{"John", "18", "Male"},
{"Daisy", "19", "Female"},
{"Dave", "23", "Male"},
{"Jake", "30", "Male"}};

table = new JTable(data, columns) {
@Override
public boolean isCellEditable(int data, int columns) {
return false;
}

@Override
public Component prepareRenderer(TableCellRenderer r, int data, int columns) {
Component c = super.prepareRenderer(r, data, columns);

if ((data % 2 == 0)) {
c.setBackground(Color.WHITE);
} else {
c.setBackground(Color.LIGHT_GRAY);
}

return c;
}
};

//table.setFillsViewportHeight(true);

JScrollPane spane = new JScrollPane(table);

createLayout(spane);

setTitle("Hotel reservation system");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

private void createLayout(JComponent... arg) {

Container pane = getContentPane();
GroupLayout gl = new GroupLayout(pane);
pane.setLayout(gl);

gl.setAutoCreateContainerGaps(true);

gl.setHorizontalGroup(gl.createParallelGroup()
.addComponent(arg[0])
);

gl.setVerticalGroup(gl.createSequentialGroup()
.addComponent(arg[0])
);

pack();
}

public static void main(String[] args) {

SwingUtilities.invokeLater(() -> {
HotelReservationSystemEx ex = new HotelReservationSystemEx();
ex.setVisible(true);
});
}
}

此外,您无需创建 JPanel 并实例化JTable 两次。

这是屏幕截图:

Screenshot from the example

关于java - 无法更改 JTable 的位置和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38980330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com