Why this TabbedPane collapse internal ScrollPanes with resolution1200x800 ?

E

etantonio

Good evening, I've the following swing code with a tabbedpane that
contains three scrollPanes,
my problem is that with a resolution of 1200x800 all these pane
desappears while with for example 1366x768
I've the panes showed without problem, can you help me to fix this
code ??
I couldn't understand where's the problem.
Thanks

Antonio
www.etantonio.it/en

*************************************************************************************************************

package it.imt.edusat.log;

import it.imt.edusat.EduSat;
import it.imt.edusat.TelemetriesValuesPanel;
import it.imt.edusat.TlmAndCommandsPanel.TabListener;
import it.imt.edusat.chart.TelemetryChartPanel;
import it.imt.edusat.property.PropertyHandler;
import it.imt.edusat.telemetry.enums.telemetries.TelemetryGroupsEnum;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.util.Properties;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;

public class LogPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 3644776277466736306L;

private static LogPanel istanza;

private JTextArea inputMessages;
private JTextArea commandMessages;
private JTextArea outputMessages;

public static LogPanel getInstance() {
if (istanza == null) {
istanza = new LogPanel();
}
return istanza;
}

private LogPanel() {
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 1;
c.gridy = 1;

add(getRxMessagesPanel(), c);

c.gridx++;
add(getCommandMessagesScrollPanel(), c);
}

private JScrollPane getCommandMessagesScrollPanel() {
commandMessages = new JTextArea(32, 35);
//commandMessages = new JTextArea();
JScrollPane jScrollPaneCommandMessages = new JScrollPane(
commandMessages);
jScrollPaneCommandMessages.createVerticalScrollBar();
jScrollPaneCommandMessages.createHorizontalScrollBar();
jScrollPaneCommandMessages.setAutoscrolls(true);
jScrollPaneCommandMessages.setWheelScrollingEnabled(true);
jScrollPaneCommandMessages.setBorder(BorderFactory.createTitledBorder
(
null, " Comandi inviati ", TitledBorder.LEFT, TitledBorder.TOP,
new java.awt.Font("Verdana", 3, 14)));
return jScrollPaneCommandMessages;
}

private JPanel getRxMessagesPanel() {

JPanel leftPanelLogs = new JPanel();
leftPanelLogs.setLayout(new GridLayout(2, 1));

leftPanelLogs.add(getInputMessagesLogsPanel());

leftPanelLogs.add(getOutputMessagesLogsPanel());

return leftPanelLogs;
}

private JScrollPane getOutputMessagesLogsPanel() {
outputMessages = new JTextArea(15, 78);
//outputMessages = new JTextArea();
outputMessages.setAutoscrolls(true);
outputMessages.setEditable(false);
JScrollPane jScrollPaneOutputMessages = new JScrollPane
(outputMessages);
jScrollPaneOutputMessages.createVerticalScrollBar();
jScrollPaneOutputMessages.createHorizontalScrollBar();
jScrollPaneOutputMessages.setAutoscrolls(true);
jScrollPaneOutputMessages.setWheelScrollingEnabled(true);
jScrollPaneOutputMessages.setBorder(BorderFactory.createTitledBorder
(
null, " Dati calcolati ", TitledBorder.LEFT, TitledBorder.TOP,
new java.awt.Font("Verdana", 3, 14)));

return jScrollPaneOutputMessages;
}

private JScrollPane getInputMessagesLogsPanel() {
inputMessages = new JTextArea(15, 78);
//inputMessages = new JTextArea();
inputMessages.setAutoscrolls(true);
inputMessages.setEditable(false);
JScrollPane jScrollPaneInputMessages = new JScrollPane
(inputMessages);
jScrollPaneInputMessages.createVerticalScrollBar();
jScrollPaneInputMessages.createHorizontalScrollBar();
jScrollPaneInputMessages.setAutoscrolls(true);
jScrollPaneInputMessages.setWheelScrollingEnabled(true);
jScrollPaneInputMessages.setBorder(BorderFactory.createTitledBorder(
null, " Dati in ingresso ", TitledBorder.LEFT,
TitledBorder.TOP, new java.awt.Font("Verdana", 3, 14)));
return jScrollPaneInputMessages;
}

public void addInputMessage(final String message) {
inputMessages.append(message);
inputMessages.append("\n");
inputMessages.setCaretPosition(inputMessages.getDocument().getLength
());
inputMessages.setWrapStyleWord(true);
inputMessages.setLineWrap(true);
}

public void addCommandMessage(final String message) {
commandMessages.append(message);
commandMessages.append("\n");
commandMessages.setCaretPosition(commandMessages.getDocument()
.getLength());
commandMessages.setWrapStyleWord(true);
commandMessages.setLineWrap(true);
}

public void addOutputMessage(final String message) {
outputMessages.append(message);
outputMessages.append("\n");
outputMessages.setCaretPosition(outputMessages.getDocument()
.getLength());
outputMessages.setWrapStyleWord(true);
outputMessages.setLineWrap(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
BasicConfigurator.configure();

Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int screenHeight = d.height;
int screenWidth = d.width;

JTabbedPane tlmTabsGroups = new JTabbedPane();
tlmTabsGroups.addTab("Generale", LogPanel.getInstance());

JFrame jEduSatFrame = new JFrame();
jEduSatFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jEduSatFrame.setSize(screenWidth, screenHeight - 25);
jEduSatFrame.setLocation(0, 0);
jEduSatFrame.setContentPane(tlmTabsGroups);
jEduSatFrame.setVisible(true);
} catch (Throwable e) {
System.out.println("ECCEZIONE" + e);
e.printStackTrace();
}
}
});
}

}


*************************************************************************************************************
 
K

Knute Johnson

etantonio said:
Good evening, I've the following swing code with a tabbedpane that
contains three scrollPanes,
my problem is that with a resolution of 1200x800 all these pane
desappears while with for example 1366x768
I've the panes showed without problem, can you help me to fix this
code ??
I couldn't understand where's the problem.
Thanks

Antonio

The problem is most likely caused by the layout manager of the
containing component. This is a place where an SSCCE would be very helpful.
 
E

etantonio

The problem is most likely caused by the layout manager of the
containing component.  This is a place where an SSCCE would be very helpful.

this is an SSCCE
 
L

Lew

this is an SSCCE

Perhaps the extra, extra wide indentation (using TABs, no less!) rendered the
listing too unreadable for him to recognize it as such. I know I found it
discouragingly difficult to read.

Please limit indentation levels on Usenet to a maximum of four spaces (not
TABs) or so.
 
K

Knute Johnson

Lew said:
Perhaps the extra, extra wide indentation (using TABs, no less!)
rendered the listing too unreadable for him to recognize it as such. I
know I found it discouragingly difficult to read.

Please limit indentation levels on Usenet to a maximum of four spaces
(not TABs) or so.

That and it uses packages that I don't have.
 
K

Knute Johnson

etantonio said:
this is an SSCCE

I can't compile it so it doesn't really qualify as an SSCCE.

Your LogPanel has a GridBagLayout, my favorite, but it has some
interesting characteristics. The most notorious being that if the space
to layout the components is not adequate, GridBagLayout shrinks them to
their minimum size in an attempt to make them fit. Often that is very
small. One simple solution is to pack() your containing frame rather
than setting its size. Since you aren't doing that I'm guessing that's
not what you want. So you have to make room for your component. You
could put them in another JScrollPane that only shows scroll bars when
needed or you could set the minimum sizes of your components to be
something that is sure to fit in the containing frame and that will
still look acceptable.
 
L

Lew

Knute said:
That and it uses packages that I don't have.

Ah, that would destroy the "SC" part of "SSCCE", wouldn't it?

Well, I feel sure that if the OP wants help he'll work out that part.
 
R

RedGrittyBrick

etantonio said:
Good evening, I've the following swing code with a tabbedpane that
contains three scrollPanes,
my problem is that with a resolution of 1200x800 all these pane
desappears while with for example 1366x768
I've the panes showed without problem, can you help me to fix this
code ??
I couldn't understand where's the problem.
Thanks

....

private LogPanel() {
setLayout(new GridBagLayout());

As Knute points out, GridBagLayout has some, er, interesting features
which you need to be aware of. When there's a shortage of space, e.g.
when a user smoothly reduces the size of a container, I find
GridBagLayout typically snaps the contained components from their
preferred size to their minimum size. In these situations I use the
contained component's setMinimumSize() to set some suitable value and
make sure I have a JScrollpane or other means of dealing with a critical
shortage of screen real-estate.

Google for TotallyGridBag for an entertaining look at GridBagLayout, the
situation you describe is shown there.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,525
Members
44,997
Latest member
mileyka

Latest Threads

Top