如何在 JInternalFrame 中添加 JLabel?
How to add JLabel in JInternalFrame?
我在Jlabel中有一个HTML table(java),我想在JInternalFrame中显示JLabel
或者我想在没有 JLabel 的情况下将 small HTML table 添加到 Jinternalframe 中。
我怎样才能实现?我想要 JLabel 代替 header 而不是 body.
package code;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.FlowLayout;
class JInternalFrameTest extends JFrame {
JInternalFrameTest()
{
setTitle("JInternalFrame");
setJInternalFrame();
setSize(700,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void setJInternalFrame()
{
String htmlContent = "<html><body><table border = '1'>";
htmlContent += "<tr><td>Hai</td></tr></table></body></html>";
JLabel label = new JLabel();
label.setText(htmlContent);
JInternalFrame jn = new JInternalFrame("I want jlabel here",true,true,true);
jn.add(label);
jn.setLayout(new FlowLayout());
jn.add(new JButton("JButton"));
jn.setVisible(true);
add(jn);
}
}
public class JavaApp {
public static void main(String[] args) {
JInternalFrameTest jn = new JInternalFrameTest();
}
}
由于注意力不集中,看起来像是个问题 - 只需将您的 label
添加到 jn
控件:
jn.add(label);
这是修复的结果(我还添加了 <tr><td>sdfsdfsf</td></tr>
到您的 table。
UPD:
经过多次澄清后,决定将这个新标签添加到 JInternalFrame
的标题栏中。也可以这样做:
void setJInternalFrame() {
String htmlContent = "<html><body><table border ='1' bgcolor='#EEEEEE'>"
+ "<tr><td>Hai</td></tr></table></body></html>";
JInternalFrame jn = new JInternalFrame("I want jlabel here", true, true, true);
JComponent titleBar = ((BasicInternalFrameUI) jn.getUI()).getNorthPane();
JLabel label = new JLabel();
label.setText(htmlContent);
label.setBounds(128, 0, 40, 20);
titleBar.add(label);
jn.setLayout(new FlowLayout());
jn.add(new JButton("JButton"));
jn.setVisible(true);
add(jn);
}
结果如下:
要更改标题栏的高度,您可以使用以下命令:
titleBar.setPreferredSize(new Dimension(titleBar.getPreferredSize().width, 100));
// don't forget to set a proper size for the label
label.setBounds(128, 10, 40, 100);
结果:
希望这会有所帮助。
我在Jlabel中有一个HTML table(java),我想在JInternalFrame中显示JLabel 或者我想在没有 JLabel 的情况下将 small HTML table 添加到 Jinternalframe 中。 我怎样才能实现?我想要 JLabel 代替 header 而不是 body.
package code;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.FlowLayout;
class JInternalFrameTest extends JFrame {
JInternalFrameTest()
{
setTitle("JInternalFrame");
setJInternalFrame();
setSize(700,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void setJInternalFrame()
{
String htmlContent = "<html><body><table border = '1'>";
htmlContent += "<tr><td>Hai</td></tr></table></body></html>";
JLabel label = new JLabel();
label.setText(htmlContent);
JInternalFrame jn = new JInternalFrame("I want jlabel here",true,true,true);
jn.add(label);
jn.setLayout(new FlowLayout());
jn.add(new JButton("JButton"));
jn.setVisible(true);
add(jn);
}
}
public class JavaApp {
public static void main(String[] args) {
JInternalFrameTest jn = new JInternalFrameTest();
}
}
由于注意力不集中,看起来像是个问题 - 只需将您的 label
添加到 jn
控件:
jn.add(label);
这是修复的结果(我还添加了 <tr><td>sdfsdfsf</td></tr>
到您的 table。
UPD:
经过多次澄清后,决定将这个新标签添加到 JInternalFrame
的标题栏中。也可以这样做:
void setJInternalFrame() {
String htmlContent = "<html><body><table border ='1' bgcolor='#EEEEEE'>"
+ "<tr><td>Hai</td></tr></table></body></html>";
JInternalFrame jn = new JInternalFrame("I want jlabel here", true, true, true);
JComponent titleBar = ((BasicInternalFrameUI) jn.getUI()).getNorthPane();
JLabel label = new JLabel();
label.setText(htmlContent);
label.setBounds(128, 0, 40, 20);
titleBar.add(label);
jn.setLayout(new FlowLayout());
jn.add(new JButton("JButton"));
jn.setVisible(true);
add(jn);
}
结果如下:
要更改标题栏的高度,您可以使用以下命令:
titleBar.setPreferredSize(new Dimension(titleBar.getPreferredSize().width, 100));
// don't forget to set a proper size for the label
label.setBounds(128, 10, 40, 100);
结果:
希望这会有所帮助。