我想添加JTable
到JPanel
其布局中null
. JPanel
包含其他组件.我必须添加JTable
适当的位置.
最近,我开始为我工作的公司创建一个程序.就像背景信息一样,我仍然是学生和初学者程序员,所以我的解决方案可能不推荐,我不知道如何做到这一点,但它有效,我不会因为它而受到评判,因为这是一项完全与编程无关的学生作业.
关于该程序的事情是,它将在具有不同屏幕尺寸和分辨率(800x600及以上)的多台不同计算机上运行.为了确保尽可能多地占用屏幕而不丢失程序的任何部分,我将布局设置为null并使用相对值对所有内容进行硬编码.
程序是自助终端风格,我首先得到屏幕尺寸值并从那里开始(例如,从我的头顶,左侧菜单占据屏幕的八分之一,顶部栏2%,等等) .我还使用字体度量来确保组件的大小正确并且所有内容都能很好地显示.
我的问题是:为什么让布局为null而不是使用布局管理器是如此不满?(我在一些论坛上被告知这是一种可怕的做事方式)我知道布局管理器如何工作并知道如何使用不同的布局,但是对于这个程序的要求(多种不同的分辨率,自定义按钮形状和放置) ,当您更改语言时,文本在组件上发生变化等等),我无法看到自己使用布局管理器来完成所有操作.
在这种情况下,你如何让更有经验的程序员使用布局管理器?当你想要一个特定的按钮和其他特定的其他组件并不真正匹配任何预定义的布局时,你会怎么做?
我正在尝试创建一个java桌面应用程序,我正在使用多个JLabel
我想设置修复高度和宽度JLabel
.我怎样才能做到这一点?
这是我的代码
public class Second extends JFrame
{
JPanel panel1,panel2;
JLabel label=new JLabel();
ArrayList<JLabel> lbllist = new ArrayList<>();
public Second()
{
super("Simple Timer");
{
getContentPane().setBackground(new java.awt.Color(255,255,255));
}
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Container c = getContentPane();
c.setLayout( new FlowLayout());
setUndecorated(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
panel2=new JPanel();
panel2.setBounds(360, 180, 360, 1020);
panel2.setBackground(new java.awt.Color(255,153,51));
c.add(panel2);
JPanel panel3 = createPanel();
panel1.setLayout(new GridBagLayout());
panel1.add(panel3);
JPanel panel4 = createPanel();
panel2.setLayout(new GridBagLayout());
// jPanel2.setLayout(null);
panel2.add(panel4);
setLayout(null);
}
private JPanel createPanel() {
JPanel panel = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在JPanel上的特定X和Y坐标处放置一系列JLabel(并设置其高度和宽度).无论我做什么,每个标签都会立即卷到前一个标签的右侧,并且与所有其他标签的尺寸完全相同.
现在,我的Jpanel处于网格布局中.我已经尝试过Absolute Layout(非法参数异常结果),Free Design(没有标签出现),Flow Layout(一切都被挤到中心),以及其他几个.
不知道我需要做些什么来使这项工作.有人可以帮忙吗?谢谢!
JLabel lbl1 = new JLabel("label 1");
JLabel lbl2 = new JLabel("label 2");
JLabel lbl3 = new JLabel("label 3");
JLabel lbl4 = new JLabel("label 4");
JLabel lbl5 = new JLabel("label 5");
myPanel.add(lbl1);
myPanel.add(lbl2);
myPanel.add(lbl3);
myPanel.add(lbl4);
myPanel.add(lbl5);
lbl1.setLocation(27, 20);
lbl2.setLocation(123, 20);
lbl3.setLocation(273, 20);
lbl4.setLocation(363, 20);
lbl5.setLocation(453, 20);
lbl1.setSize(86, 14);
lbl2.setSize(140, 14);
lbl3.setSize(80, 14);
lbl4.setSize(80, 14);
lbl5.setSize(130, 14);
Run Code Online (Sandbox Code Playgroud) 前段时间我读了这篇文章,展示了在Swing中实现鼠标可调整大小的组件的方法.
作者使用null LayoutManager以允许绝对组件定位.我知道永远不应该使用null布局,所以我的问题是:
是否有任何已实现的LayoutManager允许组件的绝对定位,或者我必须自己实现它?
查看此代码的朋友不知道为什么我无法设置JPanel的大小....
import java.io.*;
import java.util.*;
import java.sql.*;
//import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*<applet code="k" height=400 width=400></applet>*/
public class k extends JApplet implements ActionListener
{
JButton b,tinfo;
JLabel l1,l2;
JTextField f1,f2;
JPanel p1;
CardLayout c1;
public void init()
{
b=new JButton("submit");
f1=new JTextField(20);
f2=new JTextField(20);
l1=new JLabel("username");
l2=new JLabel("password");
p1=new JPanel();
c1=new CardLayout();
add(l1);
add(f1);
add(l2);
add(f2);
add(b);
add(p1);
setLayout(new FlowLayout());
b.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Connection con=DriverManager.getConnection("jdbc:odbc:mohit:","system","rock");
try
{
Properties p=new Properties();
p.load(new FileInputStream("mohu.properties")); …
Run Code Online (Sandbox Code Playgroud) 我需要使用绝对layoute的JScrollPane.我知道根本不推荐使用setLayout(null).我一直在阅读如果你想使用JScrollPane的绝对布局,有必要设置里面元素的首选大小属性,以便JScrollPane可以计算它的大小.
我一直在尝试下一个代码改变元素的顺序和大小,但我无法解决我错在哪里.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class frame extends JFrame {
private JPanel contentPane;
private JScrollPane scrollPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame frame = new frame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public frame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setLayout(null);
setContentPane(contentPane);
JPanel panel = new JPanel();
panel.setBackground(Color.red);
panel.setBounds(0,0,600,600);
panel.setPreferredSize(new Dimension(420,280)); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在JScrollPane中显示一个JTextArea,但是当我运行我的(简化)程序时,我只得到一个空框架:
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class ScrollPaneTest extends JFrame {
private Container myCP;
private JTextArea resultsTA;
private JScrollPane scrollPane;
public ScrollPaneTest() {
setSize(500, 500);
setLocation(100, 100);
myCP = this.getContentPane();
myCP.setLayout(null);
resultsTA = new JTextArea("Blah blah");
scrollPane = new JScrollPane(resultsTA,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new Dimension(200, 100));
scrollPane.setLocation(100, 300);
myCP.add(scrollPane);
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new ScrollPaneTest();
} …
Run Code Online (Sandbox Code Playgroud) 我的问题很简单,但我无法找到确切的解决方案.我尝试用Java GUI编写程序,我为程序使用绝对布局,并设置框架边界(100,100,450,300).当我运行程序并使其全屏时,组件保持在他们的位置.我希望他们根据屏幕尺寸自动更换.所有支持都被接受了,谢谢!
java user-interface swing layout-manager null-layout-manager
无论如何都要在添加组件时自动调整JPanel(垂直)的大小?我已将布局管理器指定为null.
java ×10
swing ×9
layout ×4
jscrollpane ×2
awt ×1
css-position ×1
jcomponent ×1
jlabel ×1
jtable ×1
jtextarea ×1